File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / ospf6d / ospf6_interface.h
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:11 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: /*
    2:  * Copyright (C) 2003 Yasuhiro Ohara
    3:  *
    4:  * This file is part of GNU Zebra.
    5:  *
    6:  * GNU Zebra is free software; you can redistribute it and/or modify it
    7:  * under the terms of the GNU General Public License as published by the
    8:  * Free Software Foundation; either version 2, or (at your option) any
    9:  * later version.
   10:  *
   11:  * GNU Zebra is distributed in the hope that it will be useful, but
   12:  * WITHOUT ANY WARRANTY; without even the implied warranty of
   13:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:  * General Public License for more details.
   15:  *
   16:  * You should have received a copy of the GNU General Public License
   17:  * along with GNU Zebra; see the file COPYING.  If not, write to the 
   18:  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
   19:  * Boston, MA 02111-1307, USA.  
   20:  */
   21: 
   22: #ifndef OSPF6_INTERFACE_H
   23: #define OSPF6_INTERFACE_H
   24: 
   25: #include "if.h"
   26: 
   27: /* Debug option */
   28: extern unsigned char conf_debug_ospf6_interface;
   29: #define OSPF6_DEBUG_INTERFACE_ON() \
   30:   (conf_debug_ospf6_interface = 1)
   31: #define OSPF6_DEBUG_INTERFACE_OFF() \
   32:   (conf_debug_ospf6_interface = 0)
   33: #define IS_OSPF6_DEBUG_INTERFACE \
   34:   (conf_debug_ospf6_interface)
   35: 
   36: /* Interface structure */
   37: struct ospf6_interface
   38: {
   39:   /* IF info from zebra */
   40:   struct interface *interface;
   41: 
   42:   /* back pointer */
   43:   struct ospf6_area *area;
   44: 
   45:   /* list of ospf6 neighbor */
   46:   struct list *neighbor_list;
   47: 
   48:   /* linklocal address of this I/F */
   49:   struct in6_addr *linklocal_addr;
   50: 
   51:   /* Interface ID; use interface->ifindex */
   52: 
   53:   /* ospf6 instance id */
   54:   u_char instance_id;
   55: 
   56:   /* I/F transmission delay */
   57:   u_int32_t transdelay;
   58: 
   59:   /* Network Type */
   60:   u_char type;
   61: 
   62:   /* Router Priority */
   63:   u_char priority;
   64: 
   65:   /* Time Interval */
   66:   u_int16_t hello_interval;
   67:   u_int16_t dead_interval;
   68:   u_int32_t rxmt_interval;
   69: 
   70:   u_int32_t state_change;
   71: 
   72:   /* Cost */
   73:   u_int32_t cost;
   74: 
   75:   /* I/F MTU */
   76:   u_int32_t ifmtu;
   77: 
   78:   /* Interface State */
   79:   u_char state;
   80: 
   81:   /* OSPF6 Interface flag */
   82:   char flag;
   83: 
   84:   /* MTU mismatch check */
   85:   u_char mtu_ignore;
   86: 
   87:   /* Decision of DR Election */
   88:   u_int32_t drouter;
   89:   u_int32_t bdrouter;
   90:   u_int32_t prev_drouter;
   91:   u_int32_t prev_bdrouter;
   92: 
   93:   /* Linklocal LSA Database: includes Link-LSA */
   94:   struct ospf6_lsdb *lsdb;
   95:   struct ospf6_lsdb *lsdb_self;
   96: 
   97:   struct ospf6_lsdb *lsupdate_list;
   98:   struct ospf6_lsdb *lsack_list;
   99: 
  100:   /* Ongoing Tasks */
  101:   struct thread *thread_send_hello;
  102:   struct thread *thread_send_lsupdate;
  103:   struct thread *thread_send_lsack;
  104: 
  105:   struct thread *thread_network_lsa;
  106:   struct thread *thread_link_lsa;
  107:   struct thread *thread_intra_prefix_lsa;
  108: 
  109:   struct ospf6_route_table *route_connected;
  110: 
  111:   /* prefix-list name to filter connected prefix */
  112:   char *plist_name;
  113: };
  114: 
  115: /* interface state */
  116: #define OSPF6_INTERFACE_NONE             0
  117: #define OSPF6_INTERFACE_DOWN             1
  118: #define OSPF6_INTERFACE_LOOPBACK         2
  119: #define OSPF6_INTERFACE_WAITING          3
  120: #define OSPF6_INTERFACE_POINTTOPOINT     4
  121: #define OSPF6_INTERFACE_DROTHER          5
  122: #define OSPF6_INTERFACE_BDR              6
  123: #define OSPF6_INTERFACE_DR               7
  124: #define OSPF6_INTERFACE_MAX              8
  125: 
  126: extern const char *ospf6_interface_state_str[];
  127: 
  128: /* flags */
  129: #define OSPF6_INTERFACE_DISABLE      0x01
  130: #define OSPF6_INTERFACE_PASSIVE      0x02
  131: #define OSPF6_INTERFACE_NOAUTOCOST   0x04
  132: 
  133: /* default values */
  134: #define OSPF6_INTERFACE_HELLO_INTERVAL 10
  135: #define OSPF6_INTERFACE_DEAD_INTERVAL  40
  136: #define OSPF6_INTERFACE_RXMT_INTERVAL  5
  137: #define OSPF6_INTERFACE_COST           1
  138: #define OSPF6_INTERFACE_PRIORITY       1
  139: #define OSPF6_INTERFACE_TRANSDELAY     1
  140: #define OSPF6_INTERFACE_INSTANCE_ID    0
  141: #define OSPF6_INTERFACE_BANDWIDTH      10000   /* Kbps */
  142: #define OSPF6_REFERENCE_BANDWIDTH      100000  /* Kbps */
  143: 
  144: 
  145: 
  146: /* Function Prototypes */
  147: 
  148: extern struct ospf6_interface *ospf6_interface_lookup_by_ifindex (int);
  149: extern struct ospf6_interface *ospf6_interface_create (struct interface *);
  150: extern void ospf6_interface_delete (struct ospf6_interface *);
  151: 
  152: extern void ospf6_interface_enable (struct ospf6_interface *);
  153: extern void ospf6_interface_disable (struct ospf6_interface *);
  154: 
  155: extern void ospf6_interface_if_add (struct interface *);
  156: extern void ospf6_interface_if_del (struct interface *);
  157: extern void ospf6_interface_state_update (struct interface *);
  158: extern void ospf6_interface_connected_route_update (struct interface *);
  159: 
  160: /* interface event */
  161: extern int interface_up (struct thread *);
  162: extern int interface_down (struct thread *);
  163: extern int wait_timer (struct thread *);
  164: extern int backup_seen (struct thread *);
  165: extern int neighbor_change (struct thread *);
  166: 
  167: extern void ospf6_interface_init (void);
  168: 
  169: extern int config_write_ospf6_debug_interface (struct vty *vty);
  170: extern void install_element_ospf6_debug_interface (void);
  171: 
  172: #endif /* OSPF6_INTERFACE_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>