diff options
Diffstat (limited to 'ripd/ripd.h')
| -rw-r--r-- | ripd/ripd.h | 481 |
1 files changed, 236 insertions, 245 deletions
diff --git a/ripd/ripd.h b/ripd/ripd.h index a8e65d1236..895a48c3db 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -98,255 +98,245 @@ #define RIP_AUTH_MD5_COMPAT_SIZE RIP_RTE_SIZE /* RIP structure. */ -struct rip -{ - /* RIP socket. */ - int sock; - - /* Default version of rip instance. */ - int version_send; /* version 1 or 2 (but not both) */ - int version_recv; /* version 1 or 2 or both */ - - /* Output buffer of RIP. */ - struct stream *obuf; - - /* RIP routing information base. */ - struct route_table *table; - - /* RIP only static routing information. */ - struct route_table *route; - - /* RIP neighbor. */ - struct route_table *neighbor; - - /* RIP threads. */ - struct thread *t_read; - - /* Update and garbage timer. */ - struct thread *t_update; - - /* Triggered update hack. */ - int trigger; - struct thread *t_triggered_update; - struct thread *t_triggered_interval; - - /* RIP timer values. */ - unsigned long update_time; - unsigned long timeout_time; - unsigned long garbage_time; - - /* RIP default metric. */ - int default_metric; - - /* RIP default-information originate. */ - u_char default_information; - char *default_information_route_map; - - /* RIP default distance. */ - u_char distance; - struct route_table *distance_table; - - /* RIP ECMP flag */ - unsigned int ecmp; - - /* For redistribute route map. */ - struct - { - char *name; - struct route_map *map; - int metric_config; - u_int32_t metric; - } route_map[ZEBRA_ROUTE_MAX]; - - QOBJ_FIELDS +struct rip { + /* RIP socket. */ + int sock; + + /* Default version of rip instance. */ + int version_send; /* version 1 or 2 (but not both) */ + int version_recv; /* version 1 or 2 or both */ + + /* Output buffer of RIP. */ + struct stream *obuf; + + /* RIP routing information base. */ + struct route_table *table; + + /* RIP only static routing information. */ + struct route_table *route; + + /* RIP neighbor. */ + struct route_table *neighbor; + + /* RIP threads. */ + struct thread *t_read; + + /* Update and garbage timer. */ + struct thread *t_update; + + /* Triggered update hack. */ + int trigger; + struct thread *t_triggered_update; + struct thread *t_triggered_interval; + + /* RIP timer values. */ + unsigned long update_time; + unsigned long timeout_time; + unsigned long garbage_time; + + /* RIP default metric. */ + int default_metric; + + /* RIP default-information originate. */ + u_char default_information; + char *default_information_route_map; + + /* RIP default distance. */ + u_char distance; + struct route_table *distance_table; + + /* RIP ECMP flag */ + unsigned int ecmp; + + /* For redistribute route map. */ + struct { + char *name; + struct route_map *map; + int metric_config; + u_int32_t metric; + } route_map[ZEBRA_ROUTE_MAX]; + + QOBJ_FIELDS }; DECLARE_QOBJ_TYPE(rip) /* RIP routing table entry which belong to rip_packet. */ -struct rte -{ - u_int16_t family; /* Address family of this route. */ - u_int16_t tag; /* Route Tag which included in RIP2 packet. */ - struct in_addr prefix; /* Prefix of rip route. */ - struct in_addr mask; /* Netmask of rip route. */ - struct in_addr nexthop; /* Next hop of rip route. */ - u_int32_t metric; /* Metric value of rip route. */ +struct rte { + u_int16_t family; /* Address family of this route. */ + u_int16_t tag; /* Route Tag which included in RIP2 packet. */ + struct in_addr prefix; /* Prefix of rip route. */ + struct in_addr mask; /* Netmask of rip route. */ + struct in_addr nexthop; /* Next hop of rip route. */ + u_int32_t metric; /* Metric value of rip route. */ }; /* RIP packet structure. */ -struct rip_packet -{ - unsigned char command; /* Command type of RIP packet. */ - unsigned char version; /* RIP version which coming from peer. */ - unsigned char pad1; /* Padding of RIP packet header. */ - unsigned char pad2; /* Same as above. */ - struct rte rte[1]; /* Address structure. */ +struct rip_packet { + unsigned char command; /* Command type of RIP packet. */ + unsigned char version; /* RIP version which coming from peer. */ + unsigned char pad1; /* Padding of RIP packet header. */ + unsigned char pad2; /* Same as above. */ + struct rte rte[1]; /* Address structure. */ }; /* Buffer to read RIP packet. */ -union rip_buf -{ - struct rip_packet rip_packet; - char buf[RIP_PACKET_MAXSIZ]; +union rip_buf { + struct rip_packet rip_packet; + char buf[RIP_PACKET_MAXSIZ]; }; /* RIP route information. */ -struct rip_info -{ - /* This route's type. */ - int type; +struct rip_info { + /* This route's type. */ + int type; - /* Sub type. */ - int sub_type; + /* Sub type. */ + int sub_type; - /* RIP nexthop. */ - struct in_addr nexthop; - struct in_addr from; + /* RIP nexthop. */ + struct in_addr nexthop; + struct in_addr from; - /* Which interface does this route come from. */ - ifindex_t ifindex; + /* Which interface does this route come from. */ + ifindex_t ifindex; - /* Metric of this route. */ - u_int32_t metric; + /* Metric of this route. */ + u_int32_t metric; - /* External metric of this route. - if learnt from an externalm proto */ - u_int32_t external_metric; + /* External metric of this route. + if learnt from an externalm proto */ + u_int32_t external_metric; - /* Tag information of this route. */ - u_int16_t tag; + /* Tag information of this route. */ + u_int16_t tag; - /* Flags of RIP route. */ +/* Flags of RIP route. */ #define RIP_RTF_FIB 1 #define RIP_RTF_CHANGED 2 - u_char flags; + u_char flags; - /* Garbage collect timer. */ - struct thread *t_timeout; - struct thread *t_garbage_collect; + /* Garbage collect timer. */ + struct thread *t_timeout; + struct thread *t_garbage_collect; - /* Route-map futures - this variables can be changed. */ - struct in_addr nexthop_out; - u_char metric_set; - u_int32_t metric_out; - u_int16_t tag_out; - ifindex_t ifindex_out; + /* Route-map futures - this variables can be changed. */ + struct in_addr nexthop_out; + u_char metric_set; + u_int32_t metric_out; + u_int16_t tag_out; + ifindex_t ifindex_out; - struct route_node *rp; + struct route_node *rp; - u_char distance; + u_char distance; #ifdef NEW_RIP_TABLE - struct rip_info *next; - struct rip_info *prev; + struct rip_info *next; + struct rip_info *prev; #endif /* NEW_RIP_TABLE */ }; typedef enum { - RIP_NO_SPLIT_HORIZON = 0, - RIP_SPLIT_HORIZON, - RIP_SPLIT_HORIZON_POISONED_REVERSE + RIP_NO_SPLIT_HORIZON = 0, + RIP_SPLIT_HORIZON, + RIP_SPLIT_HORIZON_POISONED_REVERSE } split_horizon_policy_t; /* RIP specific interface configuration. */ -struct rip_interface -{ - /* RIP is enabled on this interface. */ - int enable_network; - int enable_interface; +struct rip_interface { + /* RIP is enabled on this interface. */ + int enable_network; + int enable_interface; - /* RIP is running on this interface. */ - int running; + /* RIP is running on this interface. */ + int running; - /* RIP version control. */ - int ri_send; - int ri_receive; + /* RIP version control. */ + int ri_send; + int ri_receive; - /* RIPv2 broadcast mode */ - int v2_broadcast; + /* RIPv2 broadcast mode */ + int v2_broadcast; - /* RIPv2 authentication type. */ - int auth_type; + /* RIPv2 authentication type. */ + int auth_type; - /* RIPv2 authentication string. */ - char *auth_str; + /* RIPv2 authentication string. */ + char *auth_str; - /* RIPv2 authentication key chain. */ - char *key_chain; + /* RIPv2 authentication key chain. */ + char *key_chain; - /* value to use for md5->auth_len */ - u_int8_t md5_auth_len; + /* value to use for md5->auth_len */ + u_int8_t md5_auth_len; - /* Split horizon flag. */ - split_horizon_policy_t split_horizon; - split_horizon_policy_t split_horizon_default; + /* Split horizon flag. */ + split_horizon_policy_t split_horizon; + split_horizon_policy_t split_horizon_default; - /* For filter type slot. */ +/* For filter type slot. */ #define RIP_FILTER_IN 0 #define RIP_FILTER_OUT 1 #define RIP_FILTER_MAX 2 - /* Access-list. */ - struct access_list *list[RIP_FILTER_MAX]; + /* Access-list. */ + struct access_list *list[RIP_FILTER_MAX]; - /* Prefix-list. */ - struct prefix_list *prefix[RIP_FILTER_MAX]; + /* Prefix-list. */ + struct prefix_list *prefix[RIP_FILTER_MAX]; - /* Route-map. */ - struct route_map *routemap[RIP_FILTER_MAX]; + /* Route-map. */ + struct route_map *routemap[RIP_FILTER_MAX]; - /* Wake up thread. */ - struct thread *t_wakeup; + /* Wake up thread. */ + struct thread *t_wakeup; - /* Interface statistics. */ - int recv_badpackets; - int recv_badroutes; - int sent_updates; + /* Interface statistics. */ + int recv_badpackets; + int recv_badroutes; + int sent_updates; - /* Passive interface. */ - int passive; + /* Passive interface. */ + int passive; }; /* RIP peer information. */ -struct rip_peer -{ - /* Peer address. */ - struct in_addr addr; +struct rip_peer { + /* Peer address. */ + struct in_addr addr; - /* Peer RIP tag value. */ - int domain; + /* Peer RIP tag value. */ + int domain; - /* Last update time. */ - time_t uptime; + /* Last update time. */ + time_t uptime; - /* Peer RIP version. */ - u_char version; + /* Peer RIP version. */ + u_char version; - /* Statistics. */ - int recv_badpackets; - int recv_badroutes; + /* Statistics. */ + int recv_badpackets; + int recv_badroutes; - /* Timeout thread. */ - struct thread *t_timeout; + /* Timeout thread. */ + struct thread *t_timeout; }; -struct rip_md5_info -{ - u_int16_t family; - u_int16_t type; - u_int16_t packet_len; - u_char keyid; - u_char auth_len; - u_int32_t sequence; - u_int32_t reserv1; - u_int32_t reserv2; +struct rip_md5_info { + u_int16_t family; + u_int16_t type; + u_int16_t packet_len; + u_char keyid; + u_char auth_len; + u_int32_t sequence; + u_int32_t reserv1; + u_int32_t reserv2; }; -struct rip_md5_data -{ - u_int16_t family; - u_int16_t type; - u_char digest[16]; +struct rip_md5_data { + u_int16_t family; + u_int16_t type; + u_char digest[16]; }; /* RIP accepet/announce methods. */ @@ -362,11 +352,10 @@ struct rip_md5_data #define RIP_DEFAULT_METRIC_DEFAULT 1 /* RIP event. */ -enum rip_event -{ - RIP_READ, - RIP_UPDATE_EVENT, - RIP_TRIGGERED_UPDATE, +enum rip_event { + RIP_READ, + RIP_UPDATE_EVENT, + RIP_TRIGGERED_UPDATE, }; /* Macro for timer turn on. */ @@ -376,62 +365,64 @@ enum rip_event #define RIP_TIMER_OFF(X) THREAD_TIMER_OFF(X) /* Prototypes. */ -extern void rip_init (void); -extern void rip_reset (void); -extern void rip_clean (void); -extern void rip_clean_network (void); -extern void rip_interfaces_clean (void); -extern void rip_interfaces_reset (void); -extern void rip_passive_nondefault_clean (void); -extern void rip_if_init (void); -extern void rip_if_down_all (void); -extern void rip_route_map_init (void); -extern void rip_route_map_reset (void); +extern void rip_init(void); +extern void rip_reset(void); +extern void rip_clean(void); +extern void rip_clean_network(void); +extern void rip_interfaces_clean(void); +extern void rip_interfaces_reset(void); +extern void rip_passive_nondefault_clean(void); +extern void rip_if_init(void); +extern void rip_if_down_all(void); +extern void rip_route_map_init(void); +extern void rip_route_map_reset(void); extern void rip_zclient_init(struct thread_master *); extern void rip_zclient_stop(void); -extern void rip_zclient_reset (void); -extern void rip_offset_init (void); -extern int if_check_address (struct in_addr addr); - -extern int rip_request_send (struct sockaddr_in *, struct interface *, u_char, - struct connected *); -extern int rip_neighbor_lookup (struct sockaddr_in *); - -extern int rip_redistribute_check (int); -extern void rip_redistribute_add (int, int, struct prefix_ipv4 *, ifindex_t, - struct in_addr *, unsigned int, unsigned char, - route_tag_t); -extern void rip_redistribute_delete (int, int, struct prefix_ipv4 *, ifindex_t); -extern void rip_redistribute_withdraw (int); -extern void rip_zebra_ipv4_add (struct route_node *); -extern void rip_zebra_ipv4_delete (struct route_node *); -extern void rip_interface_multicast_set (int, struct connected *); -extern void rip_distribute_update_interface (struct interface *); -extern void rip_if_rmap_update_interface (struct interface *); - -extern int config_write_rip_network (struct vty *, int); -extern int config_write_rip_offset_list (struct vty *); -extern int config_write_rip_redistribute (struct vty *, int); - -extern void rip_peer_init (void); -extern void rip_peer_update (struct sockaddr_in *, u_char); -extern void rip_peer_bad_route (struct sockaddr_in *); -extern void rip_peer_bad_packet (struct sockaddr_in *); -extern void rip_peer_display (struct vty *); -extern struct rip_peer *rip_peer_lookup (struct in_addr *); -extern struct rip_peer *rip_peer_lookup_next (struct in_addr *); - -extern int rip_offset_list_apply_in (struct prefix_ipv4 *, struct interface *, u_int32_t *); -extern int rip_offset_list_apply_out (struct prefix_ipv4 *, struct interface *, u_int32_t *); -extern void rip_offset_clean (void); - -extern void rip_info_free (struct rip_info *); -extern u_char rip_distance_apply (struct rip_info *); -extern void rip_redistribute_clean (void); - -extern struct rip_info *rip_ecmp_add (struct rip_info *); -extern struct rip_info *rip_ecmp_replace (struct rip_info *); -extern struct rip_info *rip_ecmp_delete (struct rip_info *); +extern void rip_zclient_reset(void); +extern void rip_offset_init(void); +extern int if_check_address(struct in_addr addr); + +extern int rip_request_send(struct sockaddr_in *, struct interface *, u_char, + struct connected *); +extern int rip_neighbor_lookup(struct sockaddr_in *); + +extern int rip_redistribute_check(int); +extern void rip_redistribute_add(int, int, struct prefix_ipv4 *, ifindex_t, + struct in_addr *, unsigned int, unsigned char, + route_tag_t); +extern void rip_redistribute_delete(int, int, struct prefix_ipv4 *, ifindex_t); +extern void rip_redistribute_withdraw(int); +extern void rip_zebra_ipv4_add(struct route_node *); +extern void rip_zebra_ipv4_delete(struct route_node *); +extern void rip_interface_multicast_set(int, struct connected *); +extern void rip_distribute_update_interface(struct interface *); +extern void rip_if_rmap_update_interface(struct interface *); + +extern int config_write_rip_network(struct vty *, int); +extern int config_write_rip_offset_list(struct vty *); +extern int config_write_rip_redistribute(struct vty *, int); + +extern void rip_peer_init(void); +extern void rip_peer_update(struct sockaddr_in *, u_char); +extern void rip_peer_bad_route(struct sockaddr_in *); +extern void rip_peer_bad_packet(struct sockaddr_in *); +extern void rip_peer_display(struct vty *); +extern struct rip_peer *rip_peer_lookup(struct in_addr *); +extern struct rip_peer *rip_peer_lookup_next(struct in_addr *); + +extern int rip_offset_list_apply_in(struct prefix_ipv4 *, struct interface *, + u_int32_t *); +extern int rip_offset_list_apply_out(struct prefix_ipv4 *, struct interface *, + u_int32_t *); +extern void rip_offset_clean(void); + +extern void rip_info_free(struct rip_info *); +extern u_char rip_distance_apply(struct rip_info *); +extern void rip_redistribute_clean(void); + +extern struct rip_info *rip_ecmp_add(struct rip_info *); +extern struct rip_info *rip_ecmp_replace(struct rip_info *); +extern struct rip_info *rip_ecmp_delete(struct rip_info *); /* There is only one rip strucutre. */ extern struct rip *rip; @@ -443,7 +434,7 @@ extern struct thread_master *master; extern long rip_global_route_changes; extern long rip_global_queries; -DECLARE_HOOK(rip_ifaddr_add, (struct connected *ifc), (ifc)) -DECLARE_HOOK(rip_ifaddr_del, (struct connected *ifc), (ifc)) +DECLARE_HOOK(rip_ifaddr_add, (struct connected * ifc), (ifc)) +DECLARE_HOOK(rip_ifaddr_del, (struct connected * ifc), (ifc)) #endif /* _ZEBRA_RIP_H */ |
