summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_advertise.h17
-rw-r--r--bgpd/bgp_attr.c1
-rw-r--r--bgpd/bgp_mplsvpn.c6
-rw-r--r--bgpd/bgp_nexthop.c35
-rw-r--r--bgpd/bgp_packet.c27
-rw-r--r--bgpd/bgp_route.c23
-rw-r--r--bgpd/bgp_routemap.c14
-rw-r--r--bgpd/bgp_vty.c25
-rw-r--r--lib/command.c4
-rw-r--r--lib/if.c4
-rw-r--r--lib/jhash.c6
-rw-r--r--lib/jhash.h4
-rw-r--r--lib/libospf.h4
-rw-r--r--lib/md5.c2
-rw-r--r--lib/md5.h2
-rw-r--r--lib/table.c3
-rw-r--r--lib/vty.c4
-rw-r--r--lib/vty.h2
-rw-r--r--lib/workqueue.c12
-rw-r--r--ospf6d/ospf6_abr.h2
-rw-r--r--ospf6d/ospf6_area.c2
-rw-r--r--ospf6d/ospf6_asbr.c7
-rw-r--r--ospf6d/ospf6_interface.c1
-rw-r--r--ospf6d/ospf6_lsa.c2
-rw-r--r--ospf6d/ospf6_neighbor.c25
-rw-r--r--ospf6d/ospf6_neighbor.h25
-rw-r--r--ospf6d/ospf6_network.c18
-rw-r--r--ospf6d/ospf6_network.h6
-rw-r--r--ospf6d/ospf6_route.h5
-rw-r--r--ospf6d/ospf6_spf.c3
-rw-r--r--ospf6d/ospf6_top.c6
-rw-r--r--ospfd/ospf_api.c8
-rw-r--r--ospfd/ospf_vty.c1
-rw-r--r--ripd/ripd.c13
-rw-r--r--zebra/irdp_interface.c3
-rw-r--r--zebra/router-id.c33
-rw-r--r--zebra/rt_netlink.c8
-rw-r--r--zebra/rt_netlink.h4
38 files changed, 156 insertions, 211 deletions
diff --git a/bgpd/bgp_advertise.h b/bgpd/bgp_advertise.h
index 4ebde907..2cf2a29b 100644
--- a/bgpd/bgp_advertise.h
+++ b/bgpd/bgp_advertise.h
@@ -21,13 +21,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
#ifndef _QUAGGA_BGP_ADVERTISE_H
#define _QUAGGA_BGP_ADVERTISE_H
-/* BGP advertise FIFO. */
-struct bgp_advertise_fifo
-{
- struct bgp_advertise *next;
- struct bgp_advertise *prev;
-};
-
/* BGP advertise attribute. */
struct bgp_advertise_attr
{
@@ -44,7 +37,7 @@ struct bgp_advertise_attr
struct bgp_advertise
{
/* FIFO for advertisement. */
- struct bgp_advertise_fifo fifo;
+ struct fifo fifo;
/* Link list for same attribute advertise. */
struct bgp_advertise *next;
@@ -97,11 +90,13 @@ struct bgp_adj_in
/* BGP advertisement list. */
struct bgp_synchronize
{
- struct bgp_advertise_fifo update;
- struct bgp_advertise_fifo withdraw;
- struct bgp_advertise_fifo withdraw_low;
+ struct fifo update;
+ struct fifo withdraw;
+ struct fifo withdraw_low;
};
+#define BGP_ADV_FIFO_HEAD(F) ((struct bgp_advertise *)FIFO_HEAD(F))
+
/* BGP adjacency linked list. */
#define BGP_INFO_ADD(N,A,TYPE) \
do { \
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index fcf82551..b62a4f82 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -2110,7 +2110,6 @@ bgp_packet_mpattr_start (struct stream *s, afi_t afi, safi_t safi,
case SAFI_UNICAST:
case SAFI_MULTICAST:
{
- unsigned long sizep;
struct attr_extra *attre = attr->extra;
assert (attr->extra);
diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index b0cf2a98..3d2dadef 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -84,7 +84,6 @@ bgp_nlri_parse_vpnv4 (struct peer *peer, struct attr *attr,
struct prefix p;
int psize;
int prefixlen;
- u_int32_t label;
u_int16_t type;
struct rd_as rd_as;
struct rd_ip rd_ip;
@@ -117,8 +116,9 @@ bgp_nlri_parse_vpnv4 (struct peer *peer, struct attr *attr,
zlog_err ("prefix length is less than 88: %d", prefixlen);
return -1;
}
-
- label = decode_label (pnt);
+
+ /* XXX: Not doing anything with the label */
+ decode_label (pnt);
/* Copyr label to prefix. */
tagpnt = pnt;;
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index 5b1d13ac..6218e670 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -789,9 +789,9 @@ zlookup_read (void)
uint16_t length;
u_char marker;
u_char version;
- uint16_t command;
- int nbytes;
- struct in_addr raddr;
+ uint16_t command __attribute__((unused));
+ int nbytes __attribute__((unused));
+ struct in_addr raddr __attribute__((unused));
uint32_t metric;
int i;
u_char nexthop_num;
@@ -801,6 +801,7 @@ zlookup_read (void)
s = zlookup->ibuf;
stream_reset (s);
+ /* nbytes not being checked */
nbytes = stream_read (s, zlookup->sock, 2);
length = stream_getw (s);
@@ -814,9 +815,11 @@ zlookup_read (void)
__func__, zlookup->sock, marker, version);
return NULL;
}
-
+
+ /* XXX: not checking command */
command = stream_getw (s);
+ /* XXX: not doing anything with raddr */
raddr.s_addr = stream_get_ipv4 (s);
metric = stream_getl (s);
nexthop_num = stream_getc (s);
@@ -901,8 +904,6 @@ zlookup_read_ipv6 (void)
struct stream *s;
uint16_t length;
u_char version, marker;
- uint16_t command;
- int nbytes;
struct in6_addr raddr;
uint32_t metric;
int i;
@@ -913,10 +914,11 @@ zlookup_read_ipv6 (void)
s = zlookup->ibuf;
stream_reset (s);
- nbytes = stream_read (s, zlookup->sock, 2);
+ /* XXX: ignoring nbytes, see also zread_lookup */
+ stream_read (s, zlookup->sock, 2);
length = stream_getw (s);
- nbytes = stream_read (s, zlookup->sock, length - 2);
+ stream_read (s, zlookup->sock, length - 2);
marker = stream_getc (s);
version = stream_getc (s);
@@ -926,9 +928,11 @@ zlookup_read_ipv6 (void)
__func__, zlookup->sock, marker, version);
return NULL;
}
-
- command = stream_getw (s);
+ /* XXX: ignoring command */
+ stream_getw (s);
+
+ /* XXX: not actually doing anything with raddr */
stream_get (&raddr, s, 16);
metric = stream_getl (s);
@@ -1014,10 +1018,10 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
{
struct stream *s;
int ret;
- u_int16_t length, command;
+ u_int16_t length, command __attribute__((unused));
u_char version, marker;
- int nbytes;
- struct in_addr addr;
+ int nbytes __attribute__((unused));
+ struct in_addr addr __attribute__((unused));
struct in_addr nexthop;
u_int32_t metric = 0;
u_char nexthop_num;
@@ -1063,6 +1067,7 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
stream_reset (s);
/* Fetch length. */
+ /* XXX: not using nbytes */
nbytes = stream_read (s, zlookup->sock, 2);
length = stream_getw (s);
@@ -1077,9 +1082,11 @@ bgp_import_check (struct prefix *p, u_int32_t *igpmetric,
__func__, zlookup->sock, marker, version);
return 0;
}
-
+
+ /* XXX: not using command */
command = stream_getw (s);
+ /* XXX: not using addr */
addr.s_addr = stream_get_ipv4 (s);
metric = stream_getl (s);
nexthop_num = stream_getc (s);
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 65c6cac1..0fab1b08 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -158,7 +158,7 @@ bgp_update_packet (struct peer *peer, afi_t afi, safi_t safi)
snlri = peer->scratch;
stream_reset (snlri);
- adv = FIFO_HEAD (&peer->sync[afi][safi]->update);
+ adv = BGP_ADV_FIFO_HEAD (&peer->sync[afi][safi]->update);
while (adv)
{
@@ -331,7 +331,6 @@ bgp_withdraw_packet (struct peer *peer, afi_t afi, safi_t safi)
struct bgp_adj_out *adj;
struct bgp_advertise *adv;
struct bgp_node *rn;
- unsigned long pos;
bgp_size_t unfeasible_len;
bgp_size_t total_attr_len;
size_t mp_start = 0;
@@ -342,7 +341,7 @@ bgp_withdraw_packet (struct peer *peer, afi_t afi, safi_t safi)
s = peer->work;
stream_reset (s);
- while ((adv = FIFO_HEAD (&peer->sync[afi][safi]->withdraw)) != NULL)
+ while ((adv = BGP_ADV_FIFO_HEAD (&peer->sync[afi][safi]->withdraw)) != NULL)
{
assert (adv->rn);
adj = adv->adj;
@@ -595,7 +594,7 @@ bgp_write_packet (struct peer *peer)
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
{
- adv = FIFO_HEAD (&peer->sync[afi][safi]->withdraw);
+ adv = BGP_ADV_FIFO_HEAD (&peer->sync[afi][safi]->withdraw);
if (adv)
{
s = bgp_withdraw_packet (peer, afi, safi);
@@ -607,7 +606,7 @@ bgp_write_packet (struct peer *peer)
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
{
- adv = FIFO_HEAD (&peer->sync[afi][safi]->update);
+ adv = BGP_ADV_FIFO_HEAD (&peer->sync[afi][safi]->update);
if (adv)
{
if (adv->binfo && adv->binfo->uptime < peer->synctime)
@@ -663,7 +662,7 @@ bgp_write_proceed (struct peer *peer)
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
- if ((adv = FIFO_HEAD (&peer->sync[afi][safi]->update)) != NULL)
+ if ((adv = BGP_ADV_FIFO_HEAD (&peer->sync[afi][safi]->update)) != NULL)
if (adv->binfo->uptime < peer->synctime)
return 1;
@@ -2036,7 +2035,6 @@ bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
{
afi_t afi;
safi_t safi;
- u_char reserved;
struct stream *s;
/* If peer does not have the capability, send notification. */
@@ -2064,7 +2062,8 @@ bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
/* Parse packet. */
afi = stream_getw (s);
- reserved = stream_getc (s);
+ /* reserved byte */
+ stream_getc (s);
safi = stream_getc (s);
if (BGP_DEBUG (normal, NORMAL))
@@ -2116,8 +2115,8 @@ bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
if (orf_type == ORF_TYPE_PREFIX
|| orf_type == ORF_TYPE_PREFIX_OLD)
{
- u_char *p_pnt = stream_pnt (s);
- u_char *p_end = stream_pnt (s) + orf_len;
+ uint8_t *p_pnt = stream_pnt (s);
+ uint8_t *p_end = stream_pnt (s) + orf_len;
struct orf_prefix orfp;
u_char common = 0;
u_int32_t seq;
@@ -2157,7 +2156,7 @@ bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
prefix_bgp_orf_remove_all (name);
break;
}
- ok = ((p_end - p_pnt) >= sizeof(u_int32_t)) ;
+ ok = ((size_t)(p_end - p_pnt) >= sizeof(u_int32_t)) ;
if (ok)
{
memcpy (&seq, p_pnt, sizeof (u_int32_t));
@@ -2209,8 +2208,8 @@ bgp_route_refresh_receive (struct peer *peer, bgp_size_t size)
ret = prefix_bgp_orf_set (name, afi, &orfp,
(common & ORF_COMMON_PART_DENY ? 0 : 1 ),
(common & ORF_COMMON_PART_REMOVE ? 0 : 1));
-
- if (!ok || (ret != CMD_SUCCESS))
+
+ if (!ok || (ok && ret != CMD_SUCCESS))
{
if (BGP_DEBUG (normal, NORMAL))
zlog_debug ("%s Received misformatted prefixlist ORF."
@@ -2246,11 +2245,9 @@ bgp_capability_msg_parse (struct peer *peer, u_char *pnt, bgp_size_t length)
struct capability_mp_data mpc;
struct capability_header *hdr;
u_char action;
- struct bgp *bgp;
afi_t afi;
safi_t safi;
- bgp = peer->bgp;
end = pnt + length;
while (pnt < end)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 04cbb8ab..e7357e54 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -4525,20 +4525,11 @@ bgp_aggregate_route (struct bgp *bgp, struct prefix *p, struct bgp_info *rinew,
struct aspath *asmerge = NULL;
struct community *community = NULL;
struct community *commerge = NULL;
- struct in_addr nexthop;
- u_int32_t med = 0;
struct bgp_info *ri;
struct bgp_info *new;
int first = 1;
unsigned long match = 0;
- /* Record adding route's nexthop and med. */
- if (rinew)
- {
- nexthop = rinew->attr->nexthop;
- med = rinew->attr->med;
- }
-
/* ORIGIN attribute: If at least one route among routes that are
aggregated has ORIGIN with the value INCOMPLETE, then the
aggregated route must have the ORIGIN attribute with the value
@@ -4566,11 +4557,7 @@ bgp_aggregate_route (struct bgp *bgp, struct prefix *p, struct bgp_info *rinew,
continue;
if (! rinew && first)
- {
- nexthop = ri->attr->nexthop;
- med = ri->attr->med;
- first = 0;
- }
+ first = 0;
#ifdef AGGREGATE_NEXTHOP_CHECK
if (! IPV4_ADDR_SAME (&ri->attr->nexthop, &nexthop)
@@ -11773,7 +11760,13 @@ bgp_distance_unset (struct vty *vty, const char *distance_str,
}
bdistance = rn->info;
-
+
+ if (bdistance->distance != distance)
+ {
+ vty_out (vty, "Distance does not match configured%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
if (bdistance->access_list)
free (bdistance->access_list);
bgp_distance_free (bdistance);
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index c498f584..06b08592 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -1174,7 +1174,6 @@ route_set_metric (void *rule, struct prefix *prefix,
static void *
route_set_metric_compile (const char *arg)
{
- u_int32_t metric;
unsigned long larg;
char *endptr = NULL;
@@ -1185,7 +1184,6 @@ route_set_metric_compile (const char *arg)
larg = strtoul (arg, &endptr, 10);
if (*endptr != '\0' || errno || larg > UINT32_MAX)
return NULL;
- metric = larg;
}
else
{
@@ -1199,7 +1197,6 @@ route_set_metric_compile (const char *arg)
larg = strtoul (arg+1, &endptr, 10);
if (*endptr != '\0' || errno || larg > UINT32_MAX)
return NULL;
- metric = larg;
}
return XSTRDUP (MTYPE_ROUTE_MAP_COMPILED, arg);
@@ -1802,22 +1799,21 @@ static route_map_result_t
route_match_ipv6_next_hop (void *rule, struct prefix *prefix,
route_map_object_t type, void *object)
{
- struct in6_addr *addr;
+ struct in6_addr *addr = rule;
struct bgp_info *bgp_info;
if (type == RMAP_BGP)
{
- addr = rule;
bgp_info = object;
if (!bgp_info->attr->extra)
return RMAP_NOMATCH;
- if (IPV6_ADDR_SAME (&bgp_info->attr->extra->mp_nexthop_global, rule))
+ if (IPV6_ADDR_SAME (&bgp_info->attr->extra->mp_nexthop_global, addr))
return RMAP_MATCH;
if (bgp_info->attr->extra->mp_nexthop_len == 32 &&
- IPV6_ADDR_SAME (&bgp_info->attr->extra->mp_nexthop_local, rule))
+ IPV6_ADDR_SAME (&bgp_info->attr->extra->mp_nexthop_local, addr))
return RMAP_MATCH;
return RMAP_NOMATCH;
@@ -3430,7 +3426,7 @@ DEFUN (set_aggregator_as,
"IP address of aggregator\n")
{
int ret;
- as_t as;
+ as_t as __attribute__((unused)); /* dummy for VTY_GET_INTEGER_RANGE */
struct in_addr address;
char *argstr;
@@ -3464,7 +3460,7 @@ DEFUN (no_set_aggregator_as,
"AS number of aggregator\n")
{
int ret;
- as_t as;
+ as_t as __attribute__((unused)); /* dummy for VTY_GET_INTEGER_RANGE */
struct in_addr address;
char *argstr;
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index a818fe7a..ca44774a 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -576,7 +576,7 @@ DEFUN (no_bgp_confederation_identifier,
"AS number\n")
{
struct bgp *bgp;
- as_t as;
+ as_t as __attribute__((unused)); /* Dummy for VTY_GET_INTEGER_RANGE */
bgp = vty->index;
@@ -3205,7 +3205,6 @@ static int
peer_weight_set_vty (struct vty *vty, const char *ip_str,
const char *weight_str)
{
- int ret;
struct peer *peer;
unsigned long weight;
@@ -3215,9 +3214,7 @@ peer_weight_set_vty (struct vty *vty, const char *ip_str,
VTY_GET_INTEGER_RANGE("weight", weight, weight_str, 0, 65535);
- ret = peer_weight_set (peer, weight);
-
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, peer_weight_set (peer, weight));
}
static int
@@ -3229,9 +3226,7 @@ peer_weight_unset_vty (struct vty *vty, const char *ip_str)
if (! peer)
return CMD_WARNING;
- peer_weight_unset (peer);
-
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, peer_weight_unset (peer));
}
DEFUN (neighbor_weight,
@@ -3371,7 +3366,6 @@ static int
peer_timers_connect_set_vty (struct vty *vty, const char *ip_str,
const char *time_str)
{
- int ret;
struct peer *peer;
u_int32_t connect;
@@ -3381,24 +3375,19 @@ peer_timers_connect_set_vty (struct vty *vty, const char *ip_str,
VTY_GET_INTEGER_RANGE ("Connect time", connect, time_str, 0, 65535);
- ret = peer_timers_connect_set (peer, connect);
-
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, peer_timers_connect_set (peer, connect));
}
static int
peer_timers_connect_unset_vty (struct vty *vty, const char *ip_str)
{
- int ret;
struct peer *peer;
peer = peer_and_group_lookup_vty (vty, ip_str);
if (! peer)
return CMD_WARNING;
- ret = peer_timers_connect_unset (peer);
-
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, peer_timers_connect_unset (peer));
}
DEFUN (neighbor_timers_connect,
@@ -3455,7 +3444,7 @@ peer_advertise_interval_vty (struct vty *vty, const char *ip_str,
else
ret = peer_advertise_interval_unset (peer);
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, ret);
}
DEFUN (neighbor_advertise_interval,
@@ -3505,7 +3494,7 @@ peer_interface_vty (struct vty *vty, const char *ip_str, const char *str)
else
ret = peer_interface_unset (peer);
- return CMD_SUCCESS;
+ return bgp_vty_return (vty, ret);
}
DEFUN (neighbor_interface,
diff --git a/lib/command.c b/lib/command.c
index 1087ceb8..d1af7fa2 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -1411,7 +1411,7 @@ cmd_matcher_read_keywords(struct cmd_matcher *matcher,
const char *word;
int keyword_argc;
const char **keyword_argv;
- enum matcher_rv rv;
+ enum matcher_rv rv = MATCHER_NO_MATCH;
keyword_mask = 0;
while (1)
@@ -1642,7 +1642,7 @@ cmd_element_match(struct cmd_element *cmd_element,
{
struct cmd_matcher matcher;
unsigned int token_index;
- enum matcher_rv rv;
+ enum matcher_rv rv = MATCHER_NO_MATCH;
cmd_matcher_init(&matcher, cmd_element, filter,
vline, index, match_type, match);
diff --git a/lib/if.c b/lib/if.c
index 18e2fb31..3a1f9b41 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -309,8 +309,6 @@ struct interface *
if_lookup_prefix (struct prefix *prefix)
{
struct listnode *node;
- struct prefix addr;
- int bestlen = 0;
struct listnode *cnode;
struct interface *ifp;
struct connected *c;
@@ -453,7 +451,7 @@ static void
if_dump (const struct interface *ifp)
{
struct listnode *node;
- struct connected *c;
+ struct connected *c __attribute__((unused));
for (ALL_LIST_ELEMENTS_RO (ifp->connected, node, c))
zlog_info ("Interface %s index %d metric %d mtu %d "
diff --git a/lib/jhash.c b/lib/jhash.c
index 071fed6e..6154c346 100644
--- a/lib/jhash.c
+++ b/lib/jhash.c
@@ -42,10 +42,10 @@
* the input key.
*/
u_int32_t
-jhash (void *key, u_int32_t length, u_int32_t initval)
+jhash (const void *key, u_int32_t length, u_int32_t initval)
{
u_int32_t a, b, c, len;
- u_int8_t *k = key;
+ const u_int8_t *k = key;
len = length;
a = b = JHASH_GOLDEN_RATIO;
@@ -105,7 +105,7 @@ jhash (void *key, u_int32_t length, u_int32_t initval)
* The length parameter here is the number of u_int32_ts in the key.
*/
u_int32_t
-jhash2 (u_int32_t * k, u_int32_t length, u_int32_t initval)
+jhash2 (const u_int32_t *k, u_int32_t length, u_int32_t initval)
{
u_int32_t a, b, c, len;
diff --git a/lib/jhash.h b/lib/jhash.h
index 44dd1b56..985ac94e 100644
--- a/lib/jhash.h
+++ b/lib/jhash.h
@@ -24,12 +24,12 @@
* of bytes. No alignment or length assumptions are made about
* the input key.
*/
-extern u_int32_t jhash(void *key, u_int32_t length, u_int32_t initval);
+extern u_int32_t jhash(const void *key, u_int32_t length, u_int32_t initval);
/* A special optimized version that handles 1 or more of u_int32_ts.
* The length parameter here is the number of u_int32_ts in the key.
*/
-extern u_int32_t jhash2(u_int32_t *k, u_int32_t length, u_int32_t initval);
+extern u_int32_t jhash2(const u_int32_t *k, u_int32_t length, u_int32_t initval);
/* A special ultra-optimized versions that knows they are hashing exactly
* 3, 2 or 1 word(s).
diff --git a/lib/libospf.h b/lib/libospf.h
index 856c76df..2796209d 100644
--- a/lib/libospf.h
+++ b/lib/libospf.h
@@ -47,8 +47,8 @@
#define OSPF_LSA_MAXAGE_DIFF 900
#define OSPF_LS_INFINITY 0xffffff
#define OSPF_DEFAULT_DESTINATION 0x00000000 /* 0.0.0.0 */
-#define OSPF_INITIAL_SEQUENCE_NUMBER 0x80000001
-#define OSPF_MAX_SEQUENCE_NUMBER 0x7fffffff
+#define OSPF_INITIAL_SEQUENCE_NUMBER 0x80000001U
+#define OSPF_MAX_SEQUENCE_NUMBER 0x7fffffffU
/* OSPF Interface Types */
#define OSPF_IFTYPE_NONE 0
diff --git a/lib/md5.c b/lib/md5.c
index 2fc36e17..ce459bbe 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -306,7 +306,7 @@ unsigned char* text; /* pointer to data stream */
int text_len; /* length of data stream */
unsigned char* key; /* pointer to authentication key */
int key_len; /* length of authentication key */
-caddr_t digest; /* caller digest to be filled in */
+uint8_t * digest; /* caller digest to be filled in */
{
MD5_CTX context;
diff --git a/lib/md5.h b/lib/md5.h
index a03bf22a..4e5ffbd9 100644
--- a/lib/md5.h
+++ b/lib/md5.h
@@ -84,6 +84,6 @@ do { \
/* From RFC 2104 */
void hmac_md5(unsigned char* text, int text_len, unsigned char* key,
- int key_len, caddr_t digest);
+ int key_len, uint8_t *digest);
#endif /* ! _LIBZEBRA_MD5_H_*/
diff --git a/lib/table.c b/lib/table.c
index 220e9b81..bd7023c1 100644
--- a/lib/table.c
+++ b/lib/table.c
@@ -626,11 +626,8 @@ route_table_get_next_internal (const struct route_table *table,
struct prefix *p)
{
struct route_node *node, *tmp_node;
- u_char prefixlen;
int cmp;
- prefixlen = p->prefixlen;
-
node = table->top;
while (node)
diff --git a/lib/vty.c b/lib/vty.c
index 488f8d5f..3f08b9e9 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -2458,7 +2458,7 @@ vty_log (const char *level, const char *proto_str,
/* Async-signal-safe version of vty_log for fixed strings. */
void
-vty_log_fixed (const char *buf, size_t len)
+vty_log_fixed (char *buf, size_t len)
{
unsigned int i;
struct iovec iov[2];
@@ -2467,7 +2467,7 @@ vty_log_fixed (const char *buf, size_t len)
if (!vtyvec)
return;
- iov[0].iov_base = (void *)buf;
+ iov[0].iov_base = buf;
iov[0].iov_len = len;
iov[1].iov_base = (void *)"\r\n";
iov[1].iov_len = 2;
diff --git a/lib/vty.h b/lib/vty.h
index 1798585e..4d6048c9 100644
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -242,6 +242,6 @@ extern void vty_hello (struct vty *);
/* Send a fixed-size message to all vty terminal monitors; this should be
an async-signal-safe function. */
-extern void vty_log_fixed (const char *buf, size_t len);
+extern void vty_log_fixed (char *buf, size_t len);
#endif /* _ZEBRA_VTY_H */
diff --git a/lib/workqueue.c b/lib/workqueue.c
index 61643bf8..e09d009f 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -30,7 +30,11 @@
#include "log.h"
/* master list of work_queues */
-static struct list work_queues;
+static struct list _work_queues;
+/* pointer primarily to avoid an otherwise harmless warning on
+ * ALL_LIST_ELEMENTS_RO
+ */
+static struct list *work_queues = &_work_queues;
#define WORK_QUEUE_MIN_GRANULARITY 1
@@ -78,7 +82,7 @@ work_queue_new (struct thread_master *m, const char *queue_name)
new->items->del = (void (*)(void *)) work_queue_item_free;
- listnode_add (&work_queues, new);
+ listnode_add (work_queues, new);
new->cycles.granularity = WORK_QUEUE_MIN_GRANULARITY;
@@ -96,7 +100,7 @@ work_queue_free (struct work_queue *wq)
/* list_delete frees items via callback */
list_delete (wq->items);
- listnode_delete (&work_queues, wq);
+ listnode_delete (work_queues, wq);
XFREE (MTYPE_WORK_QUEUE_NAME, wq->name);
XFREE (MTYPE_WORK_QUEUE, wq);
@@ -187,7 +191,7 @@ DEFUN(show_work_queues,
"Name",
VTY_NEWLINE);
- for (ALL_LIST_ELEMENTS_RO ((&work_queues), node, wq))
+ for (ALL_LIST_ELEMENTS_RO (work_queues, node, wq))
{
vty_out (vty,"%c %8d %5d %8ld %7d %6d %6u %s%s",
(CHECK_FLAG (wq->flags, WQ_UNPLUGGED) ? ' ' : 'P'),
diff --git a/ospf6d/ospf6_abr.h b/ospf6d/ospf6_abr.h
index 816f5964..e5e2660b 100644
--- a/ospf6d/ospf6_abr.h
+++ b/ospf6d/ospf6_abr.h
@@ -24,6 +24,8 @@
/* for struct ospf6_route */
#include "ospf6_route.h"
+/* for struct ospf6_prefix */
+#include "ospf6_proto.h"
/* Debug option */
extern unsigned char conf_debug_ospf6_abr;
diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c
index 4b4ca130..9b704221 100644
--- a/ospf6d/ospf6_area.c
+++ b/ospf6d/ospf6_area.c
@@ -518,13 +518,11 @@ DEFUN (no_area_filter_list,
"Filter networks sent from this area\n")
{
struct ospf6_area *area;
- struct prefix_list *plist;
OSPF6_CMD_AREA_GET (argv[0], area);
argc--;
argv++;
- plist = prefix_list_lookup (AFI_IP6, argv[0]);
if (strncmp (argv[1], "in", 2) == 0)
{
if (PREFIX_NAME_IN (area))
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 6ba6cdf6..b1620d4a 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -58,18 +58,13 @@ ospf6_as_external_lsa_originate (struct ospf6_route *route)
{
char buffer[OSPF6_MAX_LSASIZE];
struct ospf6_lsa_header *lsa_header;
- struct ospf6_lsa *old, *lsa;
+ struct ospf6_lsa *lsa;
struct ospf6_external_info *info = route->route_option;
struct ospf6_as_external_lsa *as_external_lsa;
char buf[64];
caddr_t p;
- /* find previous LSA */
- old = ospf6_lsdb_lookup (htons (OSPF6_LSTYPE_AS_EXTERNAL),
- route->path.origin.id, ospf6->router_id,
- ospf6->lsdb);
-
if (IS_OSPF6_DEBUG_ASBR || IS_OSPF6_DEBUG_ORIGINATE (AS_EXTERNAL))
{
prefix2str (&route->prefix, buf, sizeof (buf));
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index f0ef7909..772caff7 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -1283,7 +1283,6 @@ DEFUN (no_ipv6_ospf6_cost,
{
struct ospf6_interface *oi;
struct interface *ifp;
- unsigned long int lcost;
ifp = (struct interface *) vty->index;
assert (ifp);
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index 2e615355..e57306bc 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -493,7 +493,7 @@ ospf6_lsa_show_internal (struct vty *vty, struct ospf6_lsa *lsa)
vty_out (vty, "Flag: %x %s", lsa->flag, VNL);
vty_out (vty, "Lock: %d %s", lsa->lock, VNL);
vty_out (vty, "ReTx Count: %d%s", lsa->retrans_count, VNL);
- vty_out (vty, "Threads: Expire: %x, Refresh: %x %s",
+ vty_out (vty, "Threads: Expire: 0x%p, Refresh: 0x%p %s",
lsa->expire, lsa->refresh, VNL);
vty_out (vty, "%s", VNL);
return;
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index 7f6c6c5c..f20c83b9 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -46,6 +46,31 @@ const char *ospf6_neighbor_state_str[] =
{ "None", "Down", "Attempt", "Init", "Twoway", "ExStart", "ExChange",
"Loading", "Full", NULL };
+static const char *ospf6_neighbor_event_str[] =
+ {
+ "NoEvent",
+ "HelloReceived",
+ "2-WayReceived",
+ "NegotiationDone",
+ "ExchangeDone",
+ "LoadingDone",
+ "AdjOK?",
+ "SeqNumberMismatch",
+ "BadLSReq",
+ "1-WayReceived",
+ "InactivityTimer",
+ };
+
+static const char *
+ospf6_neighbor_event_string (int event)
+{
+ #define OSPF6_NEIGHBOR_UNKNOWN_EVENT_STRING "UnknownEvent"
+
+ if (event < OSPF6_NEIGHBOR_EVENT_MAX_EVENT)
+ return ospf6_neighbor_event_str[event];
+ return OSPF6_NEIGHBOR_UNKNOWN_EVENT_STRING;
+}
+
int
ospf6_neighbor_cmp (void *va, void *vb)
{
diff --git a/ospf6d/ospf6_neighbor.h b/ospf6d/ospf6_neighbor.h
index 65c43fd2..93ffa289 100644
--- a/ospf6d/ospf6_neighbor.h
+++ b/ospf6d/ospf6_neighbor.h
@@ -122,33 +122,8 @@ struct ospf6_neighbor
#define OSPF6_NEIGHBOR_EVENT_INACTIVITY_TIMER 10
#define OSPF6_NEIGHBOR_EVENT_MAX_EVENT 11
-static const char *ospf6_neighbor_event_str[] =
- {
- "NoEvent",
- "HelloReceived",
- "2-WayReceived",
- "NegotiationDone",
- "ExchangeDone",
- "LoadingDone",
- "AdjOK?",
- "SeqNumberMismatch",
- "BadLSReq",
- "1-WayReceived",
- "InactivityTimer",
- };
-
-static const char *ospf6_neighbor_event_string (int event)
-{
- #define OSPF6_NEIGHBOR_UNKNOWN_EVENT_STRING "UnknownEvent"
-
- if (event < OSPF6_NEIGHBOR_EVENT_MAX_EVENT)
- return ospf6_neighbor_event_str[event];
- return OSPF6_NEIGHBOR_UNKNOWN_EVENT_STRING;
-}
-
extern const char *ospf6_neighbor_state_str[];
-
/* Function Prototypes */
int ospf6_neighbor_cmp (void *va, void *vb);
void ospf6_neighbor_dbex_init (struct ospf6_neighbor *on);
diff --git a/ospf6d/ospf6_network.c b/ospf6d/ospf6_network.c
index 74cfbec7..e0be38b3 100644
--- a/ospf6d/ospf6_network.c
+++ b/ospf6d/ospf6_network.c
@@ -37,18 +37,8 @@ int ospf6_sock;
struct in6_addr allspfrouters6;
struct in6_addr alldrouters6;
-/* setsockopt ReUseAddr to on */
-void
-ospf6_set_reuseaddr (void)
-{
- u_int on = 0;
- if (setsockopt (ospf6_sock, SOL_SOCKET, SO_REUSEADDR, &on,
- sizeof (u_int)) < 0)
- zlog_warn ("Network: set SO_REUSEADDR failed: %s", safe_strerror (errno));
-}
-
/* setsockopt MulticastLoop to off */
-void
+static void
ospf6_reset_mcastloop (void)
{
u_int off = 0;
@@ -58,13 +48,13 @@ ospf6_reset_mcastloop (void)
safe_strerror (errno));
}
-void
+static void
ospf6_set_pktinfo (void)
{
setsockopt_ipv6_pktinfo (ospf6_sock, 1);
}
-void
+static void
ospf6_set_transport_class (void)
{
#ifdef IPTOS_PREC_INTERNETCONTROL
@@ -72,7 +62,7 @@ ospf6_set_transport_class (void)
#endif
}
-void
+static void
ospf6_set_checksum (void)
{
int offset = 12;
diff --git a/ospf6d/ospf6_network.h b/ospf6d/ospf6_network.h
index 947834d5..127bf45c 100644
--- a/ospf6d/ospf6_network.h
+++ b/ospf6d/ospf6_network.h
@@ -28,12 +28,6 @@ extern int ospf6_sock;
extern struct in6_addr allspfrouters6;
extern struct in6_addr alldrouters6;
-/* Function Prototypes */
-extern void ospf6_set_reuseaddr (void);
-extern void ospf6_reset_mcastloop (void);
-extern void ospf6_set_pktinfo (void);
-extern void ospf6_set_checksum (void);
-
extern int ospf6_serv_sock (void);
extern void ospf6_sso (u_int ifindex, struct in6_addr *group, int option);
diff --git a/ospf6d/ospf6_route.h b/ospf6d/ospf6_route.h
index b384824c..c0dcf9f1 100644
--- a/ospf6d/ospf6_route.h
+++ b/ospf6d/ospf6_route.h
@@ -122,6 +122,10 @@ struct ospf6_route
/* Destination Type */
u_char type;
+ /* XXX: It would likely be better to use separate struct in_addr's
+ * for the advertising router-ID and prefix IDs, instead of stuffing them
+ * into one. See also XXX below.
+ */
/* Destination ID */
struct prefix prefix;
@@ -235,6 +239,7 @@ extern const char *ospf6_path_type_substr[OSPF6_PATH_TYPE_MAX];
sizeof (struct ospf6_nexthop) * OSPF6_MULTI_PATH_LIMIT) == 0)
#define ospf6_route_is_best(r) (CHECK_FLAG ((r)->flag, OSPF6_ROUTE_BEST))
+/* XXX: This gives GCC heartburn aboutbreaking aliasing rules. */
#define ospf6_linkstate_prefix_adv_router(x) \
(*(u_int32_t *)(&(x)->u.prefix6.s6_addr[0]))
#define ospf6_linkstate_prefix_id(x) \
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index 3ef5485f..d0e9101b 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -40,6 +40,7 @@
#include "ospf6_intra.h"
#include "ospf6_interface.h"
#include "ospf6d.h"
+#include "ospf6_abr.h"
unsigned char conf_debug_ospf6_spf = 0;
@@ -391,7 +392,7 @@ static const char *ospf6_spf_reason_str[] =
void ospf6_spf_reason_string (unsigned int reason, char *buf, int size)
{
- int bit;
+ size_t bit;
int len = 0;
if (!buf)
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index 71912701..e4e6f17a 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -180,6 +180,7 @@ ospf6_delete (struct ospf6 *o)
}
static void
+__attribute__((unused))
ospf6_enable (struct ospf6 *o)
{
struct listnode *node, *nnode;
@@ -219,7 +220,7 @@ ospf6_disable (struct ospf6 *o)
}
}
-int
+static int
ospf6_maxage_remover (struct thread *thread)
{
struct ospf6 *o = (struct ospf6 *) THREAD_ARG (thread);
@@ -471,14 +472,11 @@ DEFUN (no_ospf6_interface_area,
"OSPF6 area ID in IPv4 address notation\n"
)
{
- struct ospf6 *o;
struct ospf6_interface *oi;
struct ospf6_area *oa;
struct interface *ifp;
u_int32_t area_id;
- o = (struct ospf6 *) vty->index;
-
ifp = if_lookup_by_name (argv[0]);
if (ifp == NULL)
{
diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c
index fae942ec..cbb234ae 100644
--- a/ospfd/ospf_api.c
+++ b/ospfd/ospf_api.c
@@ -464,7 +464,7 @@ new_msg_register_event (u_int32_t seqnum, struct lsa_filter_type *filter)
{
u_char buf[OSPF_API_MAX_MSG_SIZE];
struct msg_register_event *emsg;
- int len;
+ size_t len;
emsg = (struct msg_register_event *) buf;
len = sizeof (struct msg_register_event) +
@@ -483,7 +483,7 @@ new_msg_sync_lsdb (u_int32_t seqnum, struct lsa_filter_type *filter)
{
u_char buf[OSPF_API_MAX_MSG_SIZE];
struct msg_sync_lsdb *smsg;
- int len;
+ size_t len;
smsg = (struct msg_sync_lsdb *) buf;
len = sizeof (struct msg_sync_lsdb) +
@@ -504,7 +504,7 @@ new_msg_originate_request (u_int32_t seqnum,
struct in_addr area_id, struct lsa_header *data)
{
struct msg_originate_request *omsg;
- int omsglen;
+ size_t omsglen;
char buf[OSPF_API_MAX_MSG_SIZE];
omsg = (struct msg_originate_request *) buf;
@@ -630,7 +630,7 @@ new_msg_lsa_change_notify (u_char msgtype,
{
u_char buf[OSPF_API_MAX_MSG_SIZE];
struct msg_lsa_change_notify *nmsg;
- int len;
+ size_t len;
assert (data);
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 8bfcaa82..97fcffd1 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -4034,7 +4034,6 @@ static void
show_ip_ospf_database_maxage (struct vty *vty, struct ospf *ospf)
{
struct route_node *rn;
- struct ospf_lsa *lsa;
vty_out (vty, "%s MaxAge Link States:%s%s",
VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
diff --git a/ripd/ripd.c b/ripd/ripd.c
index c69ef7fc..9d355ecb 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -1737,16 +1737,6 @@ rip_request_process (struct rip_packet *packet, int size,
ntohs (rte->family) == 0 &&
ntohl (rte->metric) == RIP_METRIC_INFINITY)
{
- struct prefix_ipv4 saddr;
-
- /* saddr will be used for determining which routes to split-horizon.
- Since the source address we'll pick will be on the same subnet as the
- destination, for the purpose of split-horizoning, we'll
- pretend that "from" is our source address. */
- saddr.family = AF_INET;
- saddr.prefixlen = IPV4_MAX_BITLEN;
- saddr.prefix = from->sin_addr;
-
/* All route with split horizon */
rip_output_process (ifc, from, rip_all_route, packet->version);
}
@@ -3262,7 +3252,6 @@ rip_distance_unset (struct vty *vty, const char *distance_str,
{
int ret;
struct prefix_ipv4 p;
- u_char distance;
struct route_node *rn;
struct rip_distance *rdistance;
@@ -3273,8 +3262,6 @@ rip_distance_unset (struct vty *vty, const char *distance_str,
return CMD_WARNING;
}
- distance = atoi (distance_str);
-
rn = route_node_lookup (rip_distance_table, (struct prefix *)&p);
if (! rn)
{
diff --git a/zebra/irdp_interface.c b/zebra/irdp_interface.c
index 6403830b..43c63a83 100644
--- a/zebra/irdp_interface.c
+++ b/zebra/irdp_interface.c
@@ -638,7 +638,6 @@ DEFUN (no_ip_irdp_address_preference,
{
struct listnode *node, *nnode;
struct in_addr ip;
- int pref;
int ret;
struct interface *ifp;
struct zebra_if *zi;
@@ -657,8 +656,6 @@ DEFUN (no_ip_irdp_address_preference,
if (!ret)
return CMD_WARNING;
- pref = atoi(argv[1]);
-
for (ALL_LIST_ELEMENTS (irdp->AdvPrefList, node, nnode, adv))
{
if(adv->ip.s_addr == ip.s_addr )
diff --git a/zebra/router-id.c b/zebra/router-id.c
index b738027e..94a29419 100644
--- a/zebra/router-id.c
+++ b/zebra/router-id.c
@@ -41,8 +41,13 @@
#include "zebra/router-id.h"
#include "zebra/redistribute.h"
-static struct list rid_all_sorted_list;
-static struct list rid_lo_sorted_list;
+/* 2nd pointer type used primarily to quell a warning on
+ * ALL_LIST_ELEMENTS_RO
+ */
+static struct list _rid_all_sorted_list;
+static struct list _rid_lo_sorted_list;
+static struct list *rid_all_sorted_list = &_rid_all_sorted_list;
+static struct list *rid_lo_sorted_list = &_rid_lo_sorted_list;
static struct prefix rid_user_assigned;
/* master zebra server structure */
@@ -86,15 +91,15 @@ router_id_get (struct prefix *p)
if (rid_user_assigned.u.prefix4.s_addr)
p->u.prefix4.s_addr = rid_user_assigned.u.prefix4.s_addr;
- else if (!list_isempty (&rid_lo_sorted_list))
+ else if (!list_isempty (rid_lo_sorted_list))
{
- node = listtail (&rid_lo_sorted_list);
+ node = listtail (rid_lo_sorted_list);
c = listgetdata (node);
p->u.prefix4.s_addr = c->address->u.prefix4.s_addr;
}
- else if (!list_isempty (&rid_all_sorted_list))
+ else if (!list_isempty (rid_all_sorted_list))
{
- node = listtail (&rid_all_sorted_list);
+ node = listtail (rid_all_sorted_list);
c = listgetdata (node);
p->u.prefix4.s_addr = c->address->u.prefix4.s_addr;
}
@@ -131,9 +136,9 @@ router_id_add_address (struct connected *ifc)
if (!strncmp (ifc->ifp->name, "lo", 2)
|| !strncmp (ifc->ifp->name, "dummy", 5))
- l = &rid_lo_sorted_list;
+ l = rid_lo_sorted_list;
else
- l = &rid_all_sorted_list;
+ l = rid_all_sorted_list;
if (!router_id_find_node (l, ifc))
listnode_add_sort (l, ifc);
@@ -164,9 +169,9 @@ router_id_del_address (struct connected *ifc)
if (!strncmp (ifc->ifp->name, "lo", 2)
|| !strncmp (ifc->ifp->name, "dummy", 5))
- l = &rid_lo_sorted_list;
+ l = rid_lo_sorted_list;
else
- l = &rid_all_sorted_list;
+ l = rid_all_sorted_list;
if ((c = router_id_find_node (l, ifc)))
listnode_delete (l, c);
@@ -240,12 +245,12 @@ router_id_init (void)
install_element (CONFIG_NODE, &router_id_cmd);
install_element (CONFIG_NODE, &no_router_id_cmd);
- memset (&rid_all_sorted_list, 0, sizeof (rid_all_sorted_list));
- memset (&rid_lo_sorted_list, 0, sizeof (rid_lo_sorted_list));
+ memset (rid_all_sorted_list, 0, sizeof (rid_all_sorted_list));
+ memset (rid_lo_sorted_list, 0, sizeof (rid_lo_sorted_list));
memset (&rid_user_assigned, 0, sizeof (rid_user_assigned));
- rid_all_sorted_list.cmp = router_id_cmp;
- rid_lo_sorted_list.cmp = router_id_cmp;
+ rid_all_sorted_list->cmp = router_id_cmp;
+ rid_lo_sorted_list->cmp = router_id_cmp;
rid_user_assigned.family = AF_INET;
rid_user_assigned.prefixlen = 32;
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index f3cdcdc3..12dbd1ad 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1246,9 +1246,9 @@ netlink_route_read (void)
/* Utility function comes from iproute2.
Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> */
int
-addattr_l (struct nlmsghdr *n, int maxlen, int type, void *data, int alen)
+addattr_l (struct nlmsghdr *n, size_t maxlen, int type, void *data, int alen)
{
- int len;
+ size_t len;
struct rtattr *rta;
len = RTA_LENGTH (alen);
@@ -1288,9 +1288,9 @@ rta_addattr_l (struct rtattr *rta, int maxlen, int type, void *data, int alen)
/* Utility function comes from iproute2.
Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> */
int
-addattr32 (struct nlmsghdr *n, int maxlen, int type, int data)
+addattr32 (struct nlmsghdr *n, size_t maxlen, int type, int data)
{
- int len;
+ size_t len;
struct rtattr *rta;
len = RTA_LENGTH (4);
diff --git a/zebra/rt_netlink.h b/zebra/rt_netlink.h
index 452b3974..0facd49e 100644
--- a/zebra/rt_netlink.h
+++ b/zebra/rt_netlink.h
@@ -27,9 +27,9 @@
#define NL_PKT_BUF_SIZE 8192
extern int
-addattr32 (struct nlmsghdr *n, int maxlen, int type, int data);
+addattr32 (struct nlmsghdr *n, size_t maxlen, int type, int data);
extern int
-addattr_l (struct nlmsghdr *n, int maxlen, int type, void *data, int alen);
+addattr_l (struct nlmsghdr *n, size_t maxlen, int type, void *data, int alen);
extern int
rta_addattr_l (struct rtattr *rta, int maxlen, int type, void *data, int alen);