From ab0f61552622084a13ede59adefc4c54b5513d7b Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 10 Dec 2009 14:22:44 +0300 Subject: zebra: deal with irdp compile warnings * zebra/irdp.h * irdp_send_thread(): move prototype to common header file * irdp_advert_off(): idem * process_solicit(): idem * irdp_read_raw(): idem * send_packet(): idem * zebra/irdp_interface.c * inet_2a(): move function to where it is used * in_cksum(): lib/checksum.h already provides prototype * irdp_send_thread(): prototype moved away * inet_2a(): idem * irdp_advert_off(): idem * b1, b2, b3, b4: get rid of global buffers for inet_2a() * if_group(): add local buffer for inet_2a() * if_add_group(): idem * if_drop_group(): idem * irdp_config_write(): idem * Adv_new(): make static * zebra/irdp_main.c * irdp_read_raw(): prototype moved away * send_packet(): idem * in_cksum(): lib/checksum.h already provides prototype * inet_2a(): function moved to irdp_interface.c * zebra/irdp_packet.c * b1, b2, b3, b4: get rid of global buffers for inet_2a() * in_cksum(): lib/checksum.h already provides prototype * process_solicit(): prototype moved away * irdp_read_raw(): fix uninitialized variable --- zebra/irdp.h | 7 +++++++ zebra/irdp_interface.c | 25 +++++++++++++++++-------- zebra/irdp_main.c | 20 +------------------- zebra/irdp_packet.c | 6 ++---- 4 files changed, 27 insertions(+), 31 deletions(-) diff --git a/zebra/irdp.h b/zebra/irdp.h index 1f0c1ecd..9ce55e58 100644 --- a/zebra/irdp.h +++ b/zebra/irdp.h @@ -146,5 +146,12 @@ extern void irdp_init(void); extern int irdp_sock_init(void); extern void irdp_finish(void); extern void irdp_config_write (struct vty *, struct interface *); +extern int irdp_send_thread(struct thread *t_advert); +extern void irdp_advert_off(struct interface *ifp); +extern void process_solicit (struct interface *ifp); +extern int irdp_read_raw(struct thread *r); +extern void send_packet(struct interface *ifp, struct stream *s, + u_int32_t dst, struct prefix *p, u_int32_t ttl); + #endif /* _IRDP_H */ diff --git a/zebra/irdp_interface.c b/zebra/irdp_interface.c index d982c23c..8742b62b 100644 --- a/zebra/irdp_interface.c +++ b/zebra/irdp_interface.c @@ -65,14 +65,19 @@ /* Master of threads. */ extern struct zebra_t zebrad; -int in_cksum (void *ptr, int nbytes); extern int irdp_sock; -int irdp_send_thread(struct thread *t_advert); -char *inet_2a(u_int32_t a, char *b); -void irdp_advert_off(struct interface *ifp); +static const char * +inet_2a(u_int32_t a, char *b) +{ + sprintf(b, "%u.%u.%u.%u", + (a ) & 0xFF, + (a>> 8) & 0xFF, + (a>>16) & 0xFF, + (a>>24) & 0xFF); + return b; +} -char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */ static struct prefix * irdp_get_prefix(struct interface *ifp) @@ -98,6 +103,7 @@ if_group (struct interface *ifp, struct ip_mreq m; struct prefix *p; int ret; + char b1[INET_ADDRSTRLEN]; zi = ifp->info; @@ -117,8 +123,8 @@ if_group (struct interface *ifp, if (ret < 0) zlog_warn ("IRDP: %s can't setsockopt %s: %s", add_leave == IP_ADD_MEMBERSHIP? "join group":"leave group", - inet_2a(group, b1), - safe_strerror (errno)); + inet_2a(group, b1), + safe_strerror (errno)); return ret; } @@ -129,6 +135,7 @@ if_add_group (struct interface *ifp) struct zebra_if *zi= ifp->info; struct irdp_interface *irdp = &zi->irdp; int ret; + char b1[INET_ADDRSTRLEN]; ret = if_group (ifp, irdp_sock, INADDR_ALLRTRS_GROUP, IP_ADD_MEMBERSHIP); if (ret < 0) { @@ -148,6 +155,7 @@ if_drop_group (struct interface *ifp) struct zebra_if *zi= ifp->info; struct irdp_interface *irdp = &zi->irdp; int ret; + char b1[INET_ADDRSTRLEN]; ret = if_group (ifp, irdp_sock, INADDR_ALLRTRS_GROUP, IP_DROP_MEMBERSHIP); if (ret < 0) @@ -173,7 +181,7 @@ if_set_defaults(struct interface *ifp) } -struct Adv *Adv_new (void) +static struct Adv *Adv_new (void) { return XCALLOC (MTYPE_TMP, sizeof (struct Adv)); } @@ -338,6 +346,7 @@ void irdp_config_write (struct vty *vty, struct interface *ifp) struct irdp_interface *irdp=&zi->irdp; struct Adv *adv; struct listnode *node; + char b1[INET_ADDRSTRLEN]; if(irdp->flags & IF_ACTIVE || irdp->flags & IF_SHUTDOWN) { diff --git a/zebra/irdp_main.c b/zebra/irdp_main.c index 55106699..c297979c 100644 --- a/zebra/irdp_main.c +++ b/zebra/irdp_main.c @@ -60,6 +60,7 @@ #include "zebra/irdp.h" #include +#include "checksum.h" #include "if.h" #include "sockunion.h" #include "log.h" @@ -75,25 +76,6 @@ struct thread *t_irdp_raw; /* Timer interval of irdp. */ int irdp_timer_interval = IRDP_DEFAULT_INTERVAL; -int irdp_read_raw(struct thread *r); -int in_cksum (void *ptr, int nbytes); -void send_packet(struct interface *ifp, - struct stream *s, - u_int32_t dst, - struct prefix *p, - u_int32_t ttl); - -char * -inet_2a(u_int32_t a, char *b) -{ - sprintf(b, "%u.%u.%u.%u", - (a ) & 0xFF, - (a>> 8) & 0xFF, - (a>>16) & 0xFF, - (a>>24) & 0xFF); - return b; -} - int irdp_sock_init (void) { diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c index 60038372..28dc171e 100644 --- a/zebra/irdp_packet.c +++ b/zebra/irdp_packet.c @@ -59,6 +59,7 @@ #include "zebra/irdp.h" #include #include "if.h" +#include "checksum.h" #include "sockunion.h" #include "log.h" #include "sockopt.h" @@ -67,12 +68,9 @@ /* GLOBAL VARS */ int irdp_sock = -1; -char b1[16], b2[16], b3[16], b4[16]; /* For inet_2a */ extern struct zebra_t zebrad; extern struct thread *t_irdp_raw; -int in_cksum (void *ptr, int nbytes); -void process_solicit (struct interface *ifp); static void parse_irdp_packet(char *p, @@ -231,7 +229,7 @@ int irdp_read_raw(struct thread *r) struct zebra_if *zi; struct irdp_interface *irdp; char buf[IRDP_RX_BUF]; - int ret, ifindex; + int ret, ifindex = 0; int irdp_sock = THREAD_FD (r); t_irdp_raw = thread_add_read (zebrad.master, irdp_read_raw, NULL, irdp_sock); -- cgit v1.2.1