⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ripngd.h

📁 zebra测试源代码用于 SOCKET 通信
💻 H
字号:
/* * RIPng related value and structure. * Copyright (C) 1998 Kunihiro Ishiguro * * This file is part of GNU Zebra. * * GNU Zebra is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any * later version. * * GNU Zebra is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU Zebra; see the file COPYING.  If not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA.   */#ifndef _ZEBRA_RIPNG_RIPNGD_H#define _ZEBRA_RIPNG_RIPNGD_H/* RIPng version and port number. */#define RIPNG_V1                         1#define RIPNG_PORT_DEFAULT             521#define RIPNG_VTY_PORT                2603#define RIPNG_VTYSH_PATH              "/tmp/.ripngd"#define RIPNG_MAX_PACKET_SIZE         1500#define RIPNG_PRIORITY_DEFAULT           0/* RIPng commands. */#define RIPNG_REQUEST                    1#define RIPNG_RESPONSE                   2/* RIPng metric and multicast group address. */#define RIPNG_METRIC_INFINITY           16#define RIPNG_METRIC_NEXTHOP          0xff#define RIPNG_GROUP              "ff02::9"/* RIPng timers. */#define RIPNG_UPDATE_TIMER_DEFAULT      30#define RIPNG_TIMEOUT_TIMER_DEFAULT    180#define RIPNG_GARBAGE_TIMER_DEFAULT    120/* Default config file name. */#define RIPNG_DEFAULT_CONFIG "ripngd.conf"/* RIPng route types. */#define RIPNG_ROUTE_RTE                  0#define RIPNG_ROUTE_STATIC               1#define RIPNG_ROUTE_AGGREGATE            2/* Interface send/receive configuration. */#define RIPNG_SEND_UNSPEC                0#define RIPNG_SEND_OFF                   1#define RIPNG_RECEIVE_UNSPEC             0#define RIPNG_RECEIVE_OFF                1/* Split horizon definitions. */#define RIPNG_SPLIT_HORIZON_UNSPEC       0#define RIPNG_SPLIT_HORIZON_NONE         1#define RIPNG_SPLIT_HORIZON              2#define RIPNG_SPLIT_HORIZON_POISONED     3/* RIP default route's accept/announce methods. */#define RIPNG_DEFAULT_ADVERTISE_UNSPEC   0#define RIPNG_DEFAULT_ADVERTISE_NONE     1#define RIPNG_DEFAULT_ADVERTISE          2#define RIPNG_DEFAULT_ACCEPT_UNSPEC      0#define RIPNG_DEFAULT_ACCEPT_NONE        1#define RIPNG_DEFAULT_ACCEPT             2/* Default value for "default-metric" command. */#define RIPNG_DEFAULT_METRIC_DEFAULT     1/* For max RTE calculation. */#ifndef IPV6_HDRLEN#define IPV6_HDRLEN 40#endif /* IPV6_HDRLEN */#ifndef IFMINMTU#define IFMINMTU    576#endif /* IFMINMTU *//* RIPng structure. */struct ripng {  /* RIPng socket. */  int sock;  /* RIPng Parameters.*/  u_char command;  u_char version;  unsigned long update_time;  unsigned long timeout_time;  unsigned long garbage_time;  int max_mtu;  int default_metric;  int default_information;  /* Input/output buffer of RIPng. */  struct stream *ibuf;  struct stream *obuf;  /* RIPng routing information base. */  struct route_table *table;  /* RIPng only static route information. */  struct route_table *route;  /* RIPng aggregate route information. */  struct route_table *aggregate;  /* RIPng threads. */  struct thread *t_read;  struct thread *t_write;  struct thread *t_update;  struct thread *t_garbage;  struct thread *t_zebra;  /* Triggered update hack. */  int trigger;  struct thread *t_triggered_update;  struct thread *t_triggered_interval;  /* For redistribute route map. */  struct  {    char *name;    struct route_map *map;    int metric_config;    u_int32_t metric;  } route_map[ZEBRA_ROUTE_MAX];};/* Routing table entry. */struct rte{  struct in6_addr addr;  u_short tag;  u_char prefixlen;  u_char metric;};/* RIPNG send packet. */struct ripng_packet{  u_char command;  u_char version;  u_int16_t zero;   struct rte rte[1];};/* Each route's information. */struct ripng_info{  /* This route's type.  Static, ripng or aggregate. */  u_char type;  /* Sub type for static route. */  u_char sub_type;  /* RIPng specific information */  struct in6_addr nexthop;	  struct in6_addr from;  /* Which interface does this route come from. */  unsigned int ifindex;		  /* Metric of this route.  */  u_char metric;		  /* Tag field of RIPng packet.*/  u_int16_t tag;		  /* For aggregation. */  unsigned int suppress;  /* Flags of RIPng route. */#define RIPNG_RTF_FIB      1#define RIPNG_RTF_CHANGED  2  u_char flags;  /* Garbage collect timer. */  struct thread *t_timeout;  struct thread *t_garbage_collect;  /* Route-map features - this variables can be changed. */  u_char metric_set;  struct route_node *rp;};/* RIPng tag structure. */struct ripng_tag{  /* Tag value. */  u_int16_t tag;  /* Port. */  u_int16_t port;  /* Multicast group. */  struct in6_addr maddr;  /* Table number. */  int table;  /* Distance. */  int distance;  /* Split horizon. */  u_char split_horizon;  /* Poison reverse. */  u_char poison_reverse;};/* RIPng specific interface configuration. */struct ripng_interface{  /* RIPng is enabled on this interface. */  int enable_network;  int enable_interface;  /* RIPng is running on this interface. */  int running;  /* For filter type slot. */#define RIPNG_FILTER_IN  0#define RIPNG_FILTER_OUT 1#define RIPNG_FILTER_MAX 2  /* Access-list. */  struct access_list *list[RIPNG_FILTER_MAX];  /* Prefix-list. */  struct prefix_list *prefix[RIPNG_FILTER_MAX];  /* Route-map. */  struct route_map *routemap[RIPNG_FILTER_MAX];  /* RIPng tag configuration. */  struct ripng_tag *rtag;  /* Default information originate. */  u_char default_originate;  /* Default information only. */  u_char default_only;  /* Wake up thread. */  struct thread *t_wakeup;  /* Passive interface. */  int passive;};/* All RIPng events. */enum ripng_event{  RIPNG_READ,  RIPNG_ZEBRA,  RIPNG_REQUEST_EVENT,  RIPNG_UPDATE_EVENT,  RIPNG_TRIGGERED_UPDATE,};/* RIPng timer on/off macro. */#define RIPNG_TIMER_ON(T,F,V) \do { \   if (!(T)) \      (T) = thread_add_timer (master, (F), rinfo, (V)); \} while (0)#define RIPNG_TIMER_OFF(T) \do { \   if (T) \     { \       thread_cancel(T); \       (T) = NULL; \     } \} while (0)/* Count prefix size from mask length */#define PSIZE(a) (((a) + 7) / (8))/* Extern variables. */extern struct ripng *ripng;extern struct thread_master *master;/* Prototypes. */void ripng_init ();void ripng_if_init ();void ripng_terminate ();void ripng_zclient_start ();void zebra_init ();struct ripng_info * ripng_info_new ();void ripng_info_free (struct ripng_info *rinfo);void ripng_event (enum ripng_event, int);int ripng_request (struct interface *ifp);void ripng_redistribute_add (int, int, struct prefix_ipv6 *, unsigned int);void ripng_redistribute_delete (int, int, struct prefix_ipv6 *, unsigned int);void ripng_redistribute_withdraw (int type);void ripng_distribute_update_interface (struct interface *);void ripng_if_rmap_update_interface (struct interface *);void ripng_zebra_ipv6_add (struct prefix_ipv6 *p, struct in6_addr *nexthop, unsigned int ifindex);void ripng_zebra_ipv6_delete (struct prefix_ipv6 *p, struct in6_addr *nexthop, unsigned int ifindex);void ripng_route_map_init ();#endif /* _ZEBRA_RIPNG_RIPNGD_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -