diff options
-rw-r--r-- | ripd/ChangeLog | 6 | ||||
-rw-r--r-- | ripd/rip_debug.c | 6 | ||||
-rw-r--r-- | ripd/rip_debug.h | 4 | ||||
-rw-r--r-- | ripd/rip_interface.c | 90 | ||||
-rw-r--r-- | ripd/rip_interface.h | 31 | ||||
-rw-r--r-- | ripd/rip_main.c | 8 | ||||
-rw-r--r-- | ripd/rip_offset.c | 22 | ||||
-rw-r--r-- | ripd/rip_peer.c | 16 | ||||
-rw-r--r-- | ripd/rip_routemap.c | 84 | ||||
-rw-r--r-- | ripd/rip_zebra.c | 29 | ||||
-rw-r--r-- | ripd/ripd.c | 101 | ||||
-rw-r--r-- | ripd/ripd.h | 103 |
12 files changed, 267 insertions, 233 deletions
diff --git a/ripd/ChangeLog b/ripd/ChangeLog index 3399868b..8e5ba394 100644 --- a/ripd/ChangeLog +++ b/ripd/ChangeLog @@ -1,3 +1,9 @@ +2005-10-26 Paul Jakma <paul.jakma@sun.com> + + * (general) static/extern functions and definitions. + * rip_interface.h: new file, export the public functions from + rip_interface.c + 2005-10-17 Vincent Jardin <vincent.jardin@6wind.com> * ripd.c: rip_create_socket() for each packet, it does not bind to the diff --git a/ripd/rip_debug.c b/ripd/rip_debug.c index fd735d0f..d788ea7e 100644 --- a/ripd/rip_debug.c +++ b/ripd/rip_debug.c @@ -210,7 +210,7 @@ struct cmd_node debug_node = 1 }; -int +static int config_write_debug (struct vty *vty) { int write = 0; @@ -251,7 +251,7 @@ config_write_debug (struct vty *vty) } void -rip_debug_reset () +rip_debug_reset (void) { rip_debug_event = 0; rip_debug_packet = 0; @@ -259,7 +259,7 @@ rip_debug_reset () } void -rip_debug_init () +rip_debug_init (void) { rip_debug_event = 0; rip_debug_packet = 0; diff --git a/ripd/rip_debug.h b/ripd/rip_debug.h index 3b44d0cf..f3a07eea 100644 --- a/ripd/rip_debug.h +++ b/ripd/rip_debug.h @@ -48,7 +48,7 @@ extern unsigned long rip_debug_event; extern unsigned long rip_debug_packet; extern unsigned long rip_debug_zebra; -void rip_debug_init (); -void rip_debug_reset (); +extern void rip_debug_init (void); +extern void rip_debug_reset (void); #endif /* _ZEBRA_RIP_DEBUG_H */ diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index 765e59b4..17b25ff8 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -40,15 +40,16 @@ #include "ripd/ripd.h" #include "ripd/rip_debug.h" - -void rip_enable_apply (struct interface *); -void rip_passive_interface_apply (struct interface *); -int rip_if_down(struct interface *ifp); -int rip_enable_if_lookup (const char *ifname); -int rip_enable_network_lookup2 (struct connected *connected); -void rip_enable_apply_all (); - - +#include "ripd/rip_interface.h" + +/* static prototypes */ +static void rip_enable_apply (struct interface *); +static void rip_passive_interface_apply (struct interface *); +static int rip_if_down(struct interface *ifp); +static int rip_enable_if_lookup (const char *ifname); +static int rip_enable_network_lookup2 (struct connected *connected); +static void rip_enable_apply_all (void); + struct message ri_version_msg[] = { {RI_RIP_VERSION_1, "1"}, @@ -70,7 +71,7 @@ static int passive_default; /* are we in passive-interface default mode? */ vector Vrip_passive_nondefault; /* Join to the RIP version 2 multicast group. */ -int +static int ipv4_multicast_join (int sock, struct in_addr group, struct in_addr ifa, @@ -92,7 +93,7 @@ ipv4_multicast_join (int sock, } /* Leave from the RIP version 2 multicast group. */ -int +static int ipv4_multicast_leave (int sock, struct in_addr group, struct in_addr ifa, @@ -113,8 +114,8 @@ ipv4_multicast_leave (int sock, } /* Allocate new RIP's interface configuration. */ -struct rip_interface * -rip_interface_new () +static struct rip_interface * +rip_interface_new (void) { struct rip_interface *ri; @@ -164,7 +165,7 @@ rip_interface_multicast_set (int sock, struct connected *connected) } /* Send RIP request packet to specified interface. */ -void +static void rip_request_interface_send (struct interface *ifp, u_char version) { struct sockaddr_in to; @@ -214,7 +215,7 @@ rip_request_interface_send (struct interface *ifp, u_char version) } /* This will be executed when interface goes up. */ -void +static void rip_request_interface (struct interface *ifp) { struct rip_interface *ri; @@ -244,7 +245,7 @@ rip_request_interface (struct interface *ifp) } /* Send RIP request to the neighbor. */ -void +static void rip_request_neighbor (struct in_addr addr) { struct sockaddr_in to; @@ -257,8 +258,8 @@ rip_request_neighbor (struct in_addr addr) } /* Request routes at all interfaces. */ -void -rip_request_neighbor_all () +static void +rip_request_neighbor_all (void) { struct route_node *rp; @@ -275,7 +276,7 @@ rip_request_neighbor_all () } /* Multicast packet receive socket. */ -int +static int rip_multicast_join (struct interface *ifp, int sock) { struct listnode *cnode; @@ -307,7 +308,7 @@ rip_multicast_join (struct interface *ifp, int sock) } /* Leave from multicast group. */ -void +static void rip_multicast_leave (struct interface *ifp, int sock) { struct listnode *cnode; @@ -336,7 +337,7 @@ rip_multicast_leave (struct interface *ifp, int sock) } /* Is there and address on interface that I could use ? */ -int +static int rip_if_ipv4_address_check (struct interface *ifp) { struct listnode *nn; @@ -553,7 +554,7 @@ rip_interface_delete (int command, struct zclient *zclient, } void -rip_interface_clean () +rip_interface_clean (void) { struct listnode *node; struct interface *ifp; @@ -576,7 +577,7 @@ rip_interface_clean () } void -rip_interface_reset () +rip_interface_reset (void) { struct listnode *node; struct interface *ifp; @@ -694,7 +695,8 @@ rip_if_down_all () } static void -rip_apply_address_add (struct connected *ifc) { +rip_apply_address_add (struct connected *ifc) +{ struct prefix_ipv4 address; struct prefix *p; @@ -815,7 +817,7 @@ rip_interface_address_delete (int command, struct zclient *zclient, /* Check interface is enabled by network statement. */ /* Check wether the interface has at least a connected prefix that * is within the ripng_enable_network table. */ -int +static int rip_enable_network_lookup_if (struct interface *ifp) { struct listnode *node, *nnode; @@ -876,7 +878,7 @@ rip_enable_network_lookup2 (struct connected *connected) return -1; } /* Add RIP enable network. */ -int +static int rip_enable_network_add (struct prefix *p) { struct route_node *node; @@ -898,7 +900,7 @@ rip_enable_network_add (struct prefix *p) } /* Delete RIP enable network. */ -int +static int rip_enable_network_delete (struct prefix *p) { struct route_node *node; @@ -923,7 +925,7 @@ rip_enable_network_delete (struct prefix *p) } /* Check interface is enabled by ifname statement. */ -int +static int rip_enable_if_lookup (const char *ifname) { unsigned int i; @@ -937,7 +939,7 @@ rip_enable_if_lookup (const char *ifname) } /* Add interface to rip_enable_if. */ -int +static int rip_enable_if_add (const char *ifname) { int ret; @@ -954,7 +956,7 @@ rip_enable_if_add (const char *ifname) } /* Delete interface from rip_enable_if. */ -int +static int rip_enable_if_delete (const char *ifname) { int index; @@ -974,7 +976,7 @@ rip_enable_if_delete (const char *ifname) } /* Join to multicast group and send request to the interface. */ -int +static int rip_interface_wakeup (struct thread *t) { struct interface *ifp; @@ -1004,7 +1006,7 @@ rip_interface_wakeup (struct thread *t) int rip_redistribute_check (int); -void +static void rip_connect_set (struct interface *ifp, int set) { struct listnode *node, *nnode; @@ -1140,7 +1142,7 @@ rip_neighbor_lookup (struct sockaddr_in *from) } /* Add new RIP neighbor to the neighbor tree. */ -int +static int rip_neighbor_add (struct prefix_ipv4 *p) { struct route_node *node; @@ -1156,7 +1158,7 @@ rip_neighbor_add (struct prefix_ipv4 *p) } /* Delete RIP neighbor from the neighbor tree. */ -int +static int rip_neighbor_delete (struct prefix_ipv4 *p) { struct route_node *node; @@ -1203,7 +1205,7 @@ rip_clean_network () } /* Utility function for looking up passive interface settings. */ -int +static int rip_passive_nondefault_lookup (const char *ifname) { unsigned int i; @@ -1230,8 +1232,8 @@ rip_passive_interface_apply (struct interface *ifp) zlog_debug ("interface %s: passive = %d",ifp->name,ri->passive); } -void -rip_passive_interface_apply_all () +static void +rip_passive_interface_apply_all (void) { struct interface *ifp; struct listnode *node, *nnode; @@ -1241,7 +1243,7 @@ rip_passive_interface_apply_all () } /* Passive interface. */ -int +static int rip_passive_nondefault_set (struct vty *vty, const char *ifname) { if (rip_passive_nondefault_lookup (ifname) >= 0) @@ -1254,7 +1256,7 @@ rip_passive_nondefault_set (struct vty *vty, const char *ifname) return CMD_SUCCESS; } -int +static int rip_passive_nondefault_unset (struct vty *vty, const char *ifname) { int i; @@ -1275,7 +1277,7 @@ rip_passive_nondefault_unset (struct vty *vty, const char *ifname) /* Free all configured RIP passive-interface settings. */ void -rip_passive_nondefault_clean () +rip_passive_nondefault_clean (void) { unsigned int i; char *str; @@ -1968,7 +1970,7 @@ DEFUN (no_rip_passive_interface, } /* Write rip configuration of each interface. */ -int +static int rip_interface_config_write (struct vty *vty) { struct listnode *node; @@ -2109,7 +2111,7 @@ struct cmd_node interface_node = }; /* Called when interface structure allocated. */ -int +static int rip_interface_new_hook (struct interface *ifp) { ifp->info = rip_interface_new (); @@ -2117,7 +2119,7 @@ rip_interface_new_hook (struct interface *ifp) } /* Called when interface structure deleted. */ -int +static int rip_interface_delete_hook (struct interface *ifp) { XFREE (MTYPE_RIP_INTERFACE, ifp->info); @@ -2127,7 +2129,7 @@ rip_interface_delete_hook (struct interface *ifp) /* Allocate and initialize interface vector. */ void -rip_if_init () +rip_if_init (void) { /* Default initial size of interface vector. */ if_init(); diff --git a/ripd/rip_interface.h b/ripd/rip_interface.h new file mode 100644 index 00000000..8926cce7 --- /dev/null +++ b/ripd/rip_interface.h @@ -0,0 +1,31 @@ +/* RIP interface routines + * + * This file is part of Quagga + * + * Quagga 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. + * + * Quagga 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 Quagga; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifndef _QUAGGA_RIP_INTERFACE_H +#define _QUAGGA_RIP_INTERFACE_H + +extern int rip_interface_down (int , struct zclient *, zebra_size_t); +extern int rip_interface_up (int , struct zclient *, zebra_size_t); +extern int rip_interface_add (int , struct zclient *, zebra_size_t); +extern int rip_interface_delete (int , struct zclient *, zebra_size_t); +extern int rip_interface_address_add (int , struct zclient *, zebra_size_t); +extern int rip_interface_address_delete (int , struct zclient *, zebra_size_t); + +#endif /* _QUAGGA_RIP_INTERFACE_H */ diff --git a/ripd/rip_main.c b/ripd/rip_main.c index c9b45e8b..88e63678 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -123,7 +123,7 @@ Report bugs to %s\n", progname, ZEBRA_BUG_ADDRESS); } /* SIGHUP handler. */ -void +static void sighup (void) { zlog_info ("SIGHUP received"); @@ -141,7 +141,7 @@ sighup (void) } /* SIGINT handler. */ -void +static void sigint (void) { zlog_notice ("Terminating on signal"); @@ -153,13 +153,13 @@ sigint (void) } /* SIGUSR1 handler. */ -void +static void sigusr1 (void) { zlog_rotate (NULL); } -struct quagga_signal_t ripd_signals[] = +static struct quagga_signal_t ripd_signals[] = { { .signal = SIGHUP, diff --git a/ripd/rip_offset.c b/ripd/rip_offset.c index 61f13760..e7d71f6c 100644 --- a/ripd/rip_offset.c +++ b/ripd/rip_offset.c @@ -28,6 +28,8 @@ #include "linklist.h" #include "memory.h" +#include "ripd/ripd.h" + #define RIP_OFFSET_LIST_IN 0 #define RIP_OFFSET_LIST_OUT 1 #define RIP_OFFSET_LIST_MAX 2 @@ -46,7 +48,7 @@ struct rip_offset_list static struct list *rip_offset_list_master; -int +static int strcmp_safe (const char *s1, const char *s2) { if (s1 == NULL && s2 == NULL) @@ -58,8 +60,8 @@ strcmp_safe (const char *s1, const char *s2) return strcmp (s1, s2); } -struct rip_offset_list * -rip_offset_list_new () +static struct rip_offset_list * +rip_offset_list_new (void) { struct rip_offset_list *new; @@ -68,13 +70,13 @@ rip_offset_list_new () return new; } -void +static void rip_offset_list_free (struct rip_offset_list *offset) { XFREE (MTYPE_RIP_OFFSET_LIST, offset); } -struct rip_offset_list * +static struct rip_offset_list * rip_offset_list_lookup (const char *ifname) { struct rip_offset_list *offset; @@ -88,7 +90,7 @@ rip_offset_list_lookup (const char *ifname) return NULL; } -struct rip_offset_list * +static struct rip_offset_list * rip_offset_list_get (const char *ifname) { struct rip_offset_list *offset; @@ -105,7 +107,7 @@ rip_offset_list_get (const char *ifname) return offset; } -int +static int rip_offset_list_set (struct vty *vty, const char *alist, const char *direct_str, const char *metric_str, const char *ifname) { @@ -143,7 +145,7 @@ rip_offset_list_set (struct vty *vty, const char *alist, const char *direct_str, return CMD_SUCCESS; } -int +static int rip_offset_list_unset (struct vty *vty, const char *alist, const char *direct_str, const char *metric_str, const char *ifname) @@ -334,13 +336,13 @@ DEFUN (no_rip_offset_list_ifname, return rip_offset_list_unset (vty, argv[0], argv[1], argv[2], argv[3]); } -int +static int offset_list_cmp (struct rip_offset_list *o1, struct rip_offset_list *o2) { return strcmp_safe (o1->ifname, o2->ifname); } -void +static void offset_list_del (struct rip_offset_list *offset) { if (OFFSET_LIST_IN_NAME (offset)) diff --git a/ripd/rip_peer.c b/ripd/rip_peer.c index 51df568a..e0617890 100644 --- a/ripd/rip_peer.c +++ b/ripd/rip_peer.c @@ -33,8 +33,8 @@ /* Linked list of RIP peer. */ struct list *peer_list; -struct rip_peer * -rip_peer_new () +static struct rip_peer * +rip_peer_new (void) { struct rip_peer *new; @@ -43,7 +43,7 @@ rip_peer_new () return new; } -void +static void rip_peer_free (struct rip_peer *peer) { XFREE (MTYPE_RIP_PEER, peer); @@ -78,7 +78,7 @@ rip_peer_lookup_next (struct in_addr *addr) } /* RIP peer is timeout. */ -int +static int rip_peer_timeout (struct thread *t) { struct rip_peer *peer; @@ -91,7 +91,7 @@ rip_peer_timeout (struct thread *t) } /* Get RIP peer. At the same time update timeout thread. */ -struct rip_peer * +static struct rip_peer * rip_peer_get (struct in_addr *addr) { struct rip_peer *peer; @@ -145,7 +145,7 @@ rip_peer_bad_packet (struct sockaddr_in *from) } /* Display peer uptime. */ -char * +static char * rip_peer_uptime (struct rip_peer *peer, char *buf, size_t len) { time_t uptime; @@ -197,14 +197,14 @@ rip_peer_display (struct vty *vty) } } -int +static int rip_peer_list_cmp (struct rip_peer *p1, struct rip_peer *p2) { return htonl (p1->addr.s_addr) > htonl (p2->addr.s_addr); } void -rip_peer_init () +rip_peer_init (void) { peer_list = list_new (); peer_list->cmp = (int (*)(void *, void *)) rip_peer_list_cmp; diff --git a/ripd/rip_routemap.c b/ripd/rip_routemap.c index 2a2f264f..9d6fd16e 100644 --- a/ripd/rip_routemap.c +++ b/ripd/rip_routemap.c @@ -46,7 +46,7 @@ struct rip_metric_modifier }; /* Add rip route map rule. */ -int +static int rip_route_match_add (struct vty *vty, struct route_map_index *index, const char *command, const char *arg) { @@ -69,7 +69,7 @@ rip_route_match_add (struct vty *vty, struct route_map_index *index, } /* Delete rip route map rule. */ -int +static int rip_route_match_delete (struct vty *vty, struct route_map_index *index, const char *command, const char *arg) { @@ -92,7 +92,7 @@ rip_route_match_delete (struct vty *vty, struct route_map_index *index, } /* Add rip route map rule. */ -int +static int rip_route_set_add (struct vty *vty, struct route_map_index *index, const char *command, const char *arg) { @@ -121,7 +121,7 @@ rip_route_set_add (struct vty *vty, struct route_map_index *index, } /* Delete rip route map rule. */ -int +static int rip_route_set_delete (struct vty *vty, struct route_map_index *index, const char *command, const char *arg) { @@ -145,7 +145,7 @@ rip_route_set_delete (struct vty *vty, struct route_map_index *index, /* Hook function for updating route_map assignment. */ /* ARGSUSED */ -void +static void rip_route_map_update (const char *notused) { int i; @@ -163,7 +163,7 @@ rip_route_map_update (const char *notused) /* `match metric METRIC' */ /* Match function return 1 if match is success else return zero. */ -route_map_result_t +static route_map_result_t route_match_metric (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -189,7 +189,7 @@ route_match_metric (void *rule, struct prefix *prefix, } /* Route map `match metric' match statement. `arg' is METRIC value */ -void * +static void * route_match_metric_compile (const char *arg) { u_int32_t *metric; @@ -205,7 +205,7 @@ route_match_metric_compile (const char *arg) } /* Free route map's compiled `match metric' value. */ -void +static void route_match_metric_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); @@ -222,7 +222,7 @@ struct route_map_rule_cmd route_match_metric_cmd = /* `match interface IFNAME' */ /* Match function return 1 if match is success else return zero. */ -route_map_result_t +static route_map_result_t route_match_interface (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -250,14 +250,14 @@ route_match_interface (void *rule, struct prefix *prefix, /* Route map `match interface' match statement. `arg' is IFNAME value */ /* XXX I don`t know if I need to check does interface exist? */ -void * +static void * route_match_interface_compile (const char *arg) { return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `match interface' value. */ -void +static void route_match_interface_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); @@ -275,7 +275,7 @@ struct route_map_rule_cmd route_match_interface_cmd = /* `match ip next-hop IP_ACCESS_LIST' */ /* Match function return 1 if match is success else return zero. */ -route_map_result_t +static route_map_result_t route_match_ip_next_hop (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -302,21 +302,21 @@ route_match_ip_next_hop (void *rule, struct prefix *prefix, /* Route map `ip next-hop' match statement. `arg' should be access-list name. */ -void * +static void * route_match_ip_next_hop_compile (const char *arg) { return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `. */ -void +static void route_match_ip_next_hop_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip next-hop matching. */ -struct route_map_rule_cmd route_match_ip_next_hop_cmd = +static struct route_map_rule_cmd route_match_ip_next_hop_cmd = { "ip next-hop", route_match_ip_next_hop, @@ -326,7 +326,7 @@ struct route_map_rule_cmd route_match_ip_next_hop_cmd = /* `match ip next-hop prefix-list PREFIX_LIST' */ -route_map_result_t +static route_map_result_t route_match_ip_next_hop_prefix_list (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -351,19 +351,19 @@ route_match_ip_next_hop_prefix_list (void *rule, struct prefix *prefix, return RMAP_NOMATCH; } -void * +static void * route_match_ip_next_hop_prefix_list_compile (const char *arg) { return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); } -void +static void route_match_ip_next_hop_prefix_list_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } -struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = +static struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = { "ip next-hop prefix-list", route_match_ip_next_hop_prefix_list, @@ -375,7 +375,7 @@ struct route_map_rule_cmd route_match_ip_next_hop_prefix_list_cmd = /* Match function should return 1 if match is success else return zero. */ -route_map_result_t +static route_map_result_t route_match_ip_address (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -395,21 +395,21 @@ route_match_ip_address (void *rule, struct prefix *prefix, /* Route map `ip address' match statement. `arg' should be access-list name. */ -void * +static void * route_match_ip_address_compile (const char *arg) { return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); } /* Free route map's compiled `ip address' value. */ -void +static void route_match_ip_address_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip address matching. */ -struct route_map_rule_cmd route_match_ip_address_cmd = +static struct route_map_rule_cmd route_match_ip_address_cmd = { "ip address", route_match_ip_address, @@ -419,7 +419,7 @@ struct route_map_rule_cmd route_match_ip_address_cmd = /* `match ip address prefix-list PREFIX_LIST' */ -route_map_result_t +static route_map_result_t route_match_ip_address_prefix_list (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -437,19 +437,19 @@ route_match_ip_address_prefix_list (void *rule, struct prefix *prefix, return RMAP_NOMATCH; } -void * +static void * route_match_ip_address_prefix_list_compile (const char *arg) { return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg); } -void +static void route_match_ip_address_prefix_list_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } -struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = +static struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = { "ip address prefix-list", route_match_ip_address_prefix_list, @@ -459,7 +459,7 @@ struct route_map_rule_cmd route_match_ip_address_prefix_list_cmd = /* `match tag TAG' */ /* Match function return 1 if match is success else return zero. */ -route_map_result_t +static route_map_result_t route_match_tag (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -481,7 +481,7 @@ route_match_tag (void *rule, struct prefix *prefix, } /* Route map `match tag' match statement. `arg' is TAG value */ -void * +static void * route_match_tag_compile (const char *arg) { u_short *tag; @@ -493,7 +493,7 @@ route_match_tag_compile (const char *arg) } /* Free route map's compiled `match tag' value. */ -void +static void route_match_tag_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); @@ -511,7 +511,7 @@ struct route_map_rule_cmd route_match_tag_cmd = /* `set metric METRIC' */ /* Set metric to attribute. */ -route_map_result_t +static route_map_result_t route_set_metric (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -541,7 +541,7 @@ route_set_metric (void *rule, struct prefix *prefix, } /* set metric compilation. */ -void * +static void * route_set_metric_compile (const char *arg) { int len; @@ -592,14 +592,14 @@ route_set_metric_compile (const char *arg) } /* Free route map's compiled `set metric' value. */ -void +static void route_set_metric_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } /* Set metric rule structure. */ -struct route_map_rule_cmd route_set_metric_cmd = +static struct route_map_rule_cmd route_set_metric_cmd = { "metric", route_set_metric, @@ -610,7 +610,7 @@ struct route_map_rule_cmd route_set_metric_cmd = /* `set ip next-hop IP_ADDRESS' */ /* Set nexthop to object. ojbect must be pointer to struct attr. */ -route_map_result_t +static route_map_result_t route_set_ip_nexthop (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -632,7 +632,7 @@ route_set_ip_nexthop (void *rule, struct prefix *prefix, /* Route map `ip nexthop' compile function. Given string is converted to struct in_addr structure. */ -void * +static void * route_set_ip_nexthop_compile (const char *arg) { int ret; @@ -652,14 +652,14 @@ route_set_ip_nexthop_compile (const char *arg) } /* Free route map's compiled `ip nexthop' value. */ -void +static void route_set_ip_nexthop_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for ip nexthop set. */ -struct route_map_rule_cmd route_set_ip_nexthop_cmd = +static struct route_map_rule_cmd route_set_ip_nexthop_cmd = { "ip next-hop", route_set_ip_nexthop, @@ -670,7 +670,7 @@ struct route_map_rule_cmd route_set_ip_nexthop_cmd = /* `set tag TAG' */ /* Set tag to object. ojbect must be pointer to struct attr. */ -route_map_result_t +static route_map_result_t route_set_tag (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { @@ -692,7 +692,7 @@ route_set_tag (void *rule, struct prefix *prefix, /* Route map `tag' compile function. Given string is converted to u_short. */ -void * +static void * route_set_tag_compile (const char *arg) { u_short *tag; @@ -704,14 +704,14 @@ route_set_tag_compile (const char *arg) } /* Free route map's compiled `ip nexthop' value. */ -void +static void route_set_tag_free (void *rule) { XFREE (MTYPE_ROUTE_MAP_COMPILED, rule); } /* Route map commands for tag set. */ -struct route_map_rule_cmd route_set_tag_cmd = +static struct route_map_rule_cmd route_set_tag_cmd = { "tag", route_set_tag, diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c index d810a6b9..44f407dd 100644 --- a/ripd/rip_zebra.c +++ b/ripd/rip_zebra.c @@ -29,17 +29,10 @@ #include "log.h" #include "ripd/ripd.h" #include "ripd/rip_debug.h" +#include "ripd/rip_interface.h" /* All information about zebra. */ struct zclient *zclient = NULL; - -/* Callback prototypes for zebra client service. */ -int rip_interface_add (int, struct zclient *, zebra_size_t); -int rip_interface_delete (int, struct zclient *, zebra_size_t); -int rip_interface_address_add (int, struct zclient *, zebra_size_t); -int rip_interface_address_delete (int, struct zclient *, zebra_size_t); -int rip_interface_up (int, struct zclient *, zebra_size_t); -int rip_interface_down (int, struct zclient *, zebra_size_t); /* RIPd to zebra command interface. */ void @@ -97,7 +90,7 @@ rip_zebra_ipv4_delete (struct prefix_ipv4 *p, struct in_addr *nexthop, } /* Zebra route add and delete treatment. */ -int +static int rip_zebra_read_ipv4 (int command, struct zclient *zclient, zebra_size_t length) { struct stream *s; @@ -152,13 +145,13 @@ rip_zebra_read_ipv4 (int command, struct zclient *zclient, zebra_size_t length) } void -rip_zclient_reset () +rip_zclient_reset (void) { zclient_reset (zclient); } /* RIP route-map set for redistribution */ -void +static void rip_routemap_set (int type, const char *name) { if (rip->route_map[type].name) @@ -168,14 +161,14 @@ rip_routemap_set (int type, const char *name) rip->route_map[type].map = route_map_lookup_by_name (name); } -void +static void rip_redistribute_metric_set (int type, unsigned int metric) { rip->route_map[type].metric_config = 1; rip->route_map[type].metric = metric; } -int +static int rip_metric_unset (int type, unsigned int metric) { #define DONT_CARE_METRIC_RIP 17 @@ -188,7 +181,7 @@ rip_metric_unset (int type, unsigned int metric) } /* RIP route-map unset for redistribution */ -int +static int rip_routemap_unset (int type, const char *name) { if (! rip->route_map[type].name || @@ -240,7 +233,7 @@ DEFUN (no_router_zebra, return CMD_SUCCESS; } -int +static int rip_redistribute_set (int type) { if (zclient->redist[type]) @@ -254,7 +247,7 @@ rip_redistribute_set (int type) return CMD_SUCCESS; } -int +static int rip_redistribute_unset (int type) { if (! zclient->redist[type]) @@ -278,7 +271,7 @@ rip_redistribute_check (int type) } void -rip_redistribute_clean () +rip_redistribute_clean (void) { int i; @@ -632,7 +625,7 @@ DEFUN (no_rip_default_information_originate, } /* RIP configuration write function. */ -int +static int config_write_zebra (struct vty *vty) { if (! zclient->enable) diff --git a/ripd/ripd.c b/ripd/ripd.c index 3267e157..a7286d3c 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -63,10 +63,11 @@ long rip_global_route_changes = 0; long rip_global_queries = 0; /* Prototypes. */ -void rip_event (enum rip_event, int); - -void rip_output_process (struct connected *, struct sockaddr_in *, int, u_char); - +static void rip_event (enum rip_event, int); +static void rip_output_process (struct connected *, struct sockaddr_in *, int, u_char); +static int rip_triggered_update (struct thread *); +static int rip_update_jitter (unsigned long); + /* RIP output routes type. */ enum { @@ -87,7 +88,7 @@ struct message rip_msg[] = }; /* Utility function to set boradcast option to the socket. */ -int +static int sockopt_broadcast (int sock) { int ret; @@ -102,13 +103,13 @@ sockopt_broadcast (int sock) return 0; } -int +static int rip_route_rte (struct rip_info *rinfo) { return (rinfo->type == ZEBRA_ROUTE_RIP && rinfo->sub_type == RIP_ROUTE_RTE); } -struct rip_info * +static struct rip_info * rip_info_new () { struct rip_info *new; @@ -125,7 +126,7 @@ rip_info_free (struct rip_info *rinfo) } /* RIP route garbage collect timer. */ -int +static int rip_garbage_collect (struct thread *t) { struct rip_info *rinfo; @@ -151,7 +152,7 @@ rip_garbage_collect (struct thread *t) } /* Timeout RIP routes. */ -int +static int rip_timeout (struct thread *t) { struct rip_info *rinfo; @@ -183,7 +184,7 @@ rip_timeout (struct thread *t) return 0; } -void +static void rip_timeout_update (struct rip_info *rinfo) { if (rinfo->metric != RIP_METRIC_INFINITY) @@ -193,7 +194,7 @@ rip_timeout_update (struct rip_info *rinfo) } } -int +static int rip_incoming_filter (struct prefix_ipv4 *p, struct rip_interface *ri) { struct distribute *dist; @@ -264,7 +265,7 @@ rip_incoming_filter (struct prefix_ipv4 *p, struct rip_interface *ri) return 0; } -int +static int rip_outgoing_filter (struct prefix_ipv4 *p, struct rip_interface *ri) { struct distribute *dist; @@ -361,7 +362,7 @@ rip_nexthop_check (struct in_addr *addr) } /* RIP add route to routing table. */ -void +static void rip_rte_process (struct rte *rte, struct sockaddr_in *from, struct interface *ifp) { @@ -694,7 +695,7 @@ rip_rte_process (struct rte *rte, struct sockaddr_in *from, } /* Dump RIP packet */ -void +static void rip_packet_dump (struct rip_packet *packet, int size, const char *sndrcv) { caddr_t lim; @@ -785,7 +786,7 @@ rip_packet_dump (struct rip_packet *packet, int size, const char *sndrcv) /* Check if the destination address is valid (unicast; not net 0 or 127) (RFC2453 Section 3.9.2 - Page 26). But we don't check net 0 because we accept default route. */ -int +static int rip_destination_check (struct in_addr addr) { u_int32_t destination; @@ -812,7 +813,7 @@ rip_destination_check (struct in_addr addr) } /* RIP version 2 authentication. */ -int +static int rip_auth_simple_password (struct rte *rte, struct sockaddr_in *from, struct interface *ifp) { @@ -854,7 +855,7 @@ rip_auth_simple_password (struct rte *rte, struct sockaddr_in *from, } /* RIP version 2 authentication with MD5. */ -int +static int rip_auth_md5 (struct rip_packet *packet, struct sockaddr_in *from, int length, struct interface *ifp) { @@ -1105,7 +1106,7 @@ rip_auth_md5_set (struct stream *s, struct rip_interface *ri, size_t doff, } /* RIP routing information. */ -void +static void rip_response_process (struct rip_packet *packet, int size, struct sockaddr_in *from, struct connected *ifc) { @@ -1409,7 +1410,7 @@ rip_create_socket (struct sockaddr_in *from) * by connected argument. NULL to argument denotes destination should be * should be RIP multicast group */ -int +static int rip_send_packet (u_char * buf, int size, struct sockaddr_in *to, struct connected *ifc) { @@ -1643,7 +1644,7 @@ rip_redistribute_delete (int type, int sub_type, struct prefix_ipv4 *p, } /* Response to request called from rip_read ().*/ -void +static void rip_request_process (struct rip_packet *packet, int size, struct sockaddr_in *from, struct connected *ifc) { @@ -1811,7 +1812,7 @@ rip_read_new (struct thread *t) #endif /* RIP_RECVMSG */ /* First entry point of RIP packet. */ -int +static int rip_read (struct thread *t) { int sock; @@ -2101,7 +2102,7 @@ rip_read (struct thread *t) /* Write routing table entry to the stream and return next index of the routing table entry in the stream. */ -int +static int rip_write_rte (int num, struct stream *s, struct prefix_ipv4 *p, u_char version, struct rip_info *rinfo) { @@ -2149,7 +2150,7 @@ rip_output_process (struct connected *ifc, struct sockaddr_in *to, /* this might need to made dynamic if RIP ever supported auth methods with larger key string sizes */ char auth_str[RIP_AUTH_SIMPLE_SIZE]; - size_t doff; /* offset of digest offset field */ + size_t doff = 0; /* offset of digest offset field */ int num = 0; int rtemax; int subnetted = 0; @@ -2427,7 +2428,7 @@ rip_output_process (struct connected *ifc, struct sockaddr_in *to, } /* Send RIP packet to the interface. */ -void +static void rip_update_interface (struct connected *ifc, u_char version, int route_type) { struct sockaddr_in to; @@ -2470,7 +2471,7 @@ rip_update_interface (struct connected *ifc, u_char version, int route_type) } /* Update send to all interface and neighbor. */ -void +static void rip_update_process (int route_type) { struct listnode *node; @@ -2572,7 +2573,7 @@ rip_update_process (int route_type) } /* RIP's periodical timer. */ -int +static int rip_update (struct thread *t) { /* Clear timer pointer. */ @@ -2600,7 +2601,7 @@ rip_update (struct thread *t) } /* Walk down the RIP routing table then clear changed flag. */ -void +static void rip_clear_changed_flag () { struct route_node *rp; @@ -2613,7 +2614,7 @@ rip_clear_changed_flag () } /* Triggered update interval timer. */ -int +static int rip_triggered_interval (struct thread *t) { int rip_triggered_update (struct thread *); @@ -2629,7 +2630,7 @@ rip_triggered_interval (struct thread *t) } /* Execute triggered update. */ -int +static int rip_triggered_update (struct thread *t) { int interval; @@ -2706,8 +2707,8 @@ rip_redistribute_withdraw (int type) } /* Create new RIP instance and set it to global variable. */ -int -rip_create () +static int +rip_create (void) { rip = XMALLOC (MTYPE_RIP, sizeof (struct rip)); memset (rip, 0, sizeof (struct rip)); @@ -2787,7 +2788,7 @@ rip_request_send (struct sockaddr_in *to, struct interface *ifp, return sizeof (rip_packet); } -int +static int rip_update_jitter (unsigned long time) { #define JITTER_BOUND 4 @@ -2990,7 +2991,7 @@ DEFUN (no_rip_route, return CMD_SUCCESS; } -void +static void rip_update_default_metric () { struct route_node *np; @@ -3126,7 +3127,7 @@ struct rip_distance char *access_list; }; -struct rip_distance * +static struct rip_distance * rip_distance_new () { struct rip_distance *new; @@ -3135,13 +3136,13 @@ rip_distance_new () return new; } -void +static void rip_distance_free (struct rip_distance *rdistance) { XFREE (MTYPE_RIP_DISTANCE, rdistance); } -int +static int rip_distance_set (struct vty *vty, const char *distance_str, const char *ip_str, const char *access_list_str) { @@ -3188,7 +3189,7 @@ rip_distance_set (struct vty *vty, const char *distance_str, const char *ip_str, return CMD_SUCCESS; } -int +static int rip_distance_unset (struct vty *vty, const char *distance_str, const char *ip_str, const char *access_list_str) { @@ -3227,7 +3228,7 @@ rip_distance_unset (struct vty *vty, const char *distance_str, return CMD_SUCCESS; } -void +static void rip_distance_reset () { struct route_node *rn; @@ -3288,7 +3289,7 @@ rip_distance_apply (struct rip_info *rinfo) return 0; } -void +static void rip_distance_show (struct vty *vty) { struct route_node *rn; @@ -3387,7 +3388,7 @@ DEFUN (no_rip_distance_source_access_list, } /* Print out routes update time. */ -void +static void rip_vty_out_uptime (struct vty *vty, struct rip_info *rinfo) { struct timeval timer_now; @@ -3415,7 +3416,7 @@ rip_vty_out_uptime (struct vty *vty, struct rip_info *rinfo) } } -const char * +static const char * rip_route_type_print (int sub_type) { switch (sub_type) @@ -3513,7 +3514,7 @@ DEFUN (show_ip_rip, } /* Return next event time. */ -int +static int rip_next_thread_timer (struct thread *thread) { struct timeval timer_now; @@ -3629,7 +3630,7 @@ DEFUN (show_ip_rip_status, } /* RIP configuration write function. */ -int +static int config_write_rip (struct vty *vty) { int write = 0; @@ -3722,7 +3723,7 @@ struct cmd_node rip_node = }; /* Distribute-list update functions. */ -void +static void rip_distribute_update (struct distribute *dist) { struct interface *ifp; @@ -3796,7 +3797,7 @@ rip_distribute_update_interface (struct interface *ifp) /* Update all interface's distribute list. */ /* ARGSUSED */ -void +static void rip_distribute_update_all (struct prefix_list *notused) { struct interface *ifp; @@ -3806,7 +3807,7 @@ rip_distribute_update_all (struct prefix_list *notused) rip_distribute_update_interface (ifp); } /* ARGSUSED */ -void +static void rip_distribute_update_all_wrapper(struct access_list *notused) { rip_distribute_update_all(NULL); @@ -3924,7 +3925,7 @@ rip_reset () rip_zclient_reset (); } -void +static void rip_if_rmap_update (struct if_rmap *if_rmap) { struct interface *ifp; @@ -3970,7 +3971,7 @@ rip_if_rmap_update_interface (struct interface *ifp) rip_if_rmap_update (if_rmap); } -void +static void rip_routemap_update_redistribute (void) { int i; @@ -3987,7 +3988,7 @@ rip_routemap_update_redistribute (void) } /* ARGSUSED */ -void +static void rip_routemap_update (const char *notused) { struct interface *ifp; @@ -4001,7 +4002,7 @@ rip_routemap_update (const char *notused) /* Allocate new rip structure and set default value. */ void -rip_init () +rip_init (void) { /* Randomize for triggered update random(). */ srand (time (NULL)); diff --git a/ripd/ripd.h b/ripd/ripd.h index 6ddd52d5..cc4aef67 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -374,59 +374,59 @@ enum rip_event } while (0) /* Prototypes. */ -void rip_init (); -void rip_reset (); -void rip_clean (); -void rip_clean_network (); -void rip_interface_clean (); -void rip_interface_reset (); -void rip_passive_nondefault_clean (); -void rip_if_init (); -void rip_if_down_all (); -void rip_route_map_init (); -void rip_route_map_reset (); -void rip_snmp_init (); -void rip_zclient_init (); -void rip_zclient_start (); -void rip_zclient_reset (); -void rip_offset_init (); -int if_check_address (struct in_addr addr); -int if_valid_neighbor (struct in_addr addr); - -int rip_request_send (struct sockaddr_in *, struct interface *, u_char, +extern void rip_init (void); +extern void rip_reset (void); +extern void rip_clean (void); +extern void rip_clean_network (void); +extern void rip_interface_clean (void); +extern void rip_interface_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_snmp_init (void); +extern void rip_zclient_init (void); +extern void rip_zclient_start (void); +extern void rip_zclient_reset (void); +extern void rip_offset_init (void); +extern int if_check_address (struct in_addr addr); +extern int if_valid_neighbor (struct in_addr addr); + +extern int rip_request_send (struct sockaddr_in *, struct interface *, u_char, struct connected *); -int rip_neighbor_lookup (struct sockaddr_in *); -void rip_redistribute_add (int, int, struct prefix_ipv4 *, unsigned int, +extern int rip_neighbor_lookup (struct sockaddr_in *); +extern void rip_redistribute_add (int, int, struct prefix_ipv4 *, unsigned int, struct in_addr *, unsigned int, unsigned char); -void rip_redistribute_delete (int, int, struct prefix_ipv4 *, unsigned int); -void rip_redistribute_withdraw (int); -void rip_zebra_ipv4_add (struct prefix_ipv4 *, struct in_addr *, u_int32_t, u_char); -void rip_zebra_ipv4_delete (struct prefix_ipv4 *, struct in_addr *, u_int32_t); -void rip_interface_multicast_set (int, struct connected *); -void rip_distribute_update_interface (struct interface *); -void rip_if_rmap_update_interface (struct interface *); - -int config_write_rip_network (struct vty *, int); -int config_write_rip_offset_list (struct vty *); -int config_write_rip_redistribute (struct vty *, int); - -void rip_peer_init (); -void rip_peer_update (struct sockaddr_in *, u_char); -void rip_peer_bad_route (struct sockaddr_in *); -void rip_peer_bad_packet (struct sockaddr_in *); -void rip_peer_display (struct vty *); -struct rip_peer *rip_peer_lookup (struct in_addr *); -struct rip_peer *rip_peer_lookup_next (struct in_addr *); - -int rip_offset_list_apply_in (struct prefix_ipv4 *, struct interface *, u_int32_t *); -int rip_offset_list_apply_out (struct prefix_ipv4 *, struct interface *, u_int32_t *); -void rip_offset_clean (); - -void rip_info_free (struct rip_info *); -u_char rip_distance_apply (struct rip_info *); -void rip_redistribute_clean (); -void rip_ifaddr_add (struct interface *, struct connected *); -void rip_ifaddr_delete (struct interface *, struct connected *); +extern void rip_redistribute_delete (int, int, struct prefix_ipv4 *, unsigned int); +extern void rip_redistribute_withdraw (int); +extern void rip_zebra_ipv4_add (struct prefix_ipv4 *, struct in_addr *, u_int32_t, u_char); +extern void rip_zebra_ipv4_delete (struct prefix_ipv4 *, struct in_addr *, u_int32_t); +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 void rip_ifaddr_add (struct interface *, struct connected *); +extern void rip_ifaddr_delete (struct interface *, struct connected *); /* There is only one rip strucutre. */ extern struct rip *rip; @@ -437,5 +437,4 @@ extern struct thread_master *master; /* RIP statistics for SNMP. */ extern long rip_global_route_changes; extern long rip_global_queries; - #endif /* _ZEBRA_RIP_H */ |