Annotation of embedaddon/quagga/ospf6d/ospf6_interface.h, revision 1.1
1.1 ! misho 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: /* Router Priority */
! 60: u_char priority;
! 61:
! 62: /* Time Interval */
! 63: u_int16_t hello_interval;
! 64: u_int16_t dead_interval;
! 65: u_int32_t rxmt_interval;
! 66:
! 67: /* Cost */
! 68: u_int32_t cost;
! 69:
! 70: /* I/F MTU */
! 71: u_int32_t ifmtu;
! 72:
! 73: /* Interface State */
! 74: u_char state;
! 75:
! 76: /* OSPF6 Interface flag */
! 77: char flag;
! 78:
! 79: /* MTU mismatch check */
! 80: u_char mtu_ignore;
! 81:
! 82: /* Decision of DR Election */
! 83: u_int32_t drouter;
! 84: u_int32_t bdrouter;
! 85: u_int32_t prev_drouter;
! 86: u_int32_t prev_bdrouter;
! 87:
! 88: /* Linklocal LSA Database: includes Link-LSA */
! 89: struct ospf6_lsdb *lsdb;
! 90: struct ospf6_lsdb *lsdb_self;
! 91:
! 92: struct ospf6_lsdb *lsupdate_list;
! 93: struct ospf6_lsdb *lsack_list;
! 94:
! 95: /* Ongoing Tasks */
! 96: struct thread *thread_send_hello;
! 97: struct thread *thread_send_lsupdate;
! 98: struct thread *thread_send_lsack;
! 99:
! 100: struct thread *thread_network_lsa;
! 101: struct thread *thread_link_lsa;
! 102: struct thread *thread_intra_prefix_lsa;
! 103:
! 104: struct ospf6_route_table *route_connected;
! 105:
! 106: /* prefix-list name to filter connected prefix */
! 107: char *plist_name;
! 108: };
! 109:
! 110: /* interface state */
! 111: #define OSPF6_INTERFACE_NONE 0
! 112: #define OSPF6_INTERFACE_DOWN 1
! 113: #define OSPF6_INTERFACE_LOOPBACK 2
! 114: #define OSPF6_INTERFACE_WAITING 3
! 115: #define OSPF6_INTERFACE_POINTTOPOINT 4
! 116: #define OSPF6_INTERFACE_DROTHER 5
! 117: #define OSPF6_INTERFACE_BDR 6
! 118: #define OSPF6_INTERFACE_DR 7
! 119: #define OSPF6_INTERFACE_MAX 8
! 120:
! 121: extern const char *ospf6_interface_state_str[];
! 122:
! 123: /* flags */
! 124: #define OSPF6_INTERFACE_DISABLE 0x01
! 125: #define OSPF6_INTERFACE_PASSIVE 0x02
! 126:
! 127:
! 128: /* Function Prototypes */
! 129:
! 130: extern struct ospf6_interface *ospf6_interface_lookup_by_ifindex (int);
! 131: extern struct ospf6_interface *ospf6_interface_create (struct interface *);
! 132: extern void ospf6_interface_delete (struct ospf6_interface *);
! 133:
! 134: extern void ospf6_interface_enable (struct ospf6_interface *);
! 135: extern void ospf6_interface_disable (struct ospf6_interface *);
! 136:
! 137: extern void ospf6_interface_if_add (struct interface *);
! 138: extern void ospf6_interface_if_del (struct interface *);
! 139: extern void ospf6_interface_state_update (struct interface *);
! 140: extern void ospf6_interface_connected_route_update (struct interface *);
! 141:
! 142: /* interface event */
! 143: extern int interface_up (struct thread *);
! 144: extern int interface_down (struct thread *);
! 145: extern int wait_timer (struct thread *);
! 146: extern int backup_seen (struct thread *);
! 147: extern int neighbor_change (struct thread *);
! 148:
! 149: extern void ospf6_interface_init (void);
! 150:
! 151: extern int config_write_ospf6_debug_interface (struct vty *vty);
! 152: extern void install_element_ospf6_debug_interface (void);
! 153:
! 154: #endif /* OSPF6_INTERFACE_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>