From 2d844524ad9431ea1e53336dfcfebd3ee6520cb7 Mon Sep 17 00:00:00 2001 From: Denis Ovsienko Date: Fri, 14 Sep 2007 11:31:55 +0000 Subject: Switch from LOOKUP() to lookup() for rtm_type (see bug #401 for details). --- zebra/ChangeLog | 8 ++++++++ zebra/kernel_socket.c | 19 +++++++++---------- zebra/kernel_socket.h | 1 - zebra/rt_socket.c | 4 ++-- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/zebra/ChangeLog b/zebra/ChangeLog index b7c4d5ce..36d194aa 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,3 +1,11 @@ +2007-09-14 Denis Ovsienko + + * rt_socket.c: (kernel_rtm_ipv4) Use lookup() instead of + LOOKUP/mes_lookup() for rtm_type_str, as this is more + appropriate for sparse code-spaces (#401). + * kernel_socket.c: (rtm_read, rtmsg_debug): Idem. + * kernel_socket.[ch]: We don't need rtm_type_str_max any more. + 2007-09-12 Denis Ovsienko * rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index ff858bd3..df2b5d80 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -160,7 +160,6 @@ struct message rtm_type_str[] = #endif /* RTM_IFANNOUNCE */ {0, NULL} }; -int rtm_type_str_max = sizeof (rtm_type_str) / sizeof (struct message) - 1; struct message rtm_flag_str[] = { @@ -754,7 +753,7 @@ rtm_read (struct rt_msghdr *rtm) return; if (IS_ZEBRA_DEBUG_KERNEL) zlog_debug ("%s: got rtm of type %d (%s)", __func__, rtm->rtm_type, - LOOKUP (rtm_type_str, rtm->rtm_type)); + lookup (rtm_type_str, rtm->rtm_type)); #ifdef RTF_CLONED /*bsdi, netbsd 1.6*/ if (flags & RTF_CLONED) @@ -820,17 +819,17 @@ rtm_read (struct rt_msghdr *rtm) { case ZEBRA_RIB_NOTFOUND: zlog_debug ("%s: %s %s/%d: desync: RR isn't yet in RIB, while already in FIB", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); break; case ZEBRA_RIB_FOUND_CONNECTED: case ZEBRA_RIB_FOUND_NOGATE: inet_ntop (AF_INET, &gate.sin.sin_addr, gate_buf, INET_ADDRSTRLEN); zlog_debug ("%s: %s %s/%d: desync: RR is in RIB, but gate differs (ours is %s)", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen, gate_buf); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen, gate_buf); break; case ZEBRA_RIB_FOUND_EXACT: /* RIB RR == FIB RR */ zlog_debug ("%s: %s %s/%d: done Ok", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); rib_lookup_and_dump (&p); return; break; @@ -843,18 +842,18 @@ rtm_read (struct rt_msghdr *rtm) { case ZEBRA_RIB_FOUND_EXACT: zlog_debug ("%s: %s %s/%d: desync: RR is still in RIB, while already not in FIB", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); rib_lookup_and_dump (&p); break; case ZEBRA_RIB_FOUND_CONNECTED: case ZEBRA_RIB_FOUND_NOGATE: zlog_debug ("%s: %s %s/%d: desync: RR is still in RIB, plus gate differs", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); rib_lookup_and_dump (&p); break; case ZEBRA_RIB_NOTFOUND: /* RIB RR == FIB RR */ zlog_debug ("%s: %s %s/%d: done Ok", - __func__, LOOKUP (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); + __func__, lookup (rtm_type_str, rtm->rtm_type), buf, p.prefixlen); rib_lookup_and_dump (&p); return; break; @@ -862,7 +861,7 @@ rtm_read (struct rt_msghdr *rtm) break; default: zlog_debug ("%s: %s/%d: warning: loopback RTM of type %s received", - __func__, buf, p.prefixlen, LOOKUP (rtm_type_str, rtm->rtm_type)); + __func__, buf, p.prefixlen, lookup (rtm_type_str, rtm->rtm_type)); } return; } @@ -1063,7 +1062,7 @@ rtm_write (int message, static void rtmsg_debug (struct rt_msghdr *rtm) { - zlog_debug ("Kernel: Len: %d Type: %s", rtm->rtm_msglen, LOOKUP (rtm_type_str, rtm->rtm_type)); + zlog_debug ("Kernel: Len: %d Type: %s", rtm->rtm_msglen, lookup (rtm_type_str, rtm->rtm_type)); rtm_flag_dump (rtm->rtm_flags); zlog_debug ("Kernel: message seq %d", rtm->rtm_seq); zlog_debug ("Kernel: pid %d, rtm_addrs 0x%x", rtm->rtm_pid, rtm->rtm_addrs); diff --git a/zebra/kernel_socket.h b/zebra/kernel_socket.h index c903786b..8f8a2075 100644 --- a/zebra/kernel_socket.h +++ b/zebra/kernel_socket.h @@ -29,6 +29,5 @@ extern int ifm_read (struct if_msghdr *); extern int rtm_write (int, union sockunion *, union sockunion *, union sockunion *, unsigned int, int, int); extern struct message rtm_type_str[]; -extern int rtm_type_str_max; #endif /* __ZEBRA_KERNEL_SOCKET_H */ diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c index 63e4612f..1b8ded7e 100644 --- a/zebra/rt_socket.c +++ b/zebra/rt_socket.c @@ -211,14 +211,14 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) if (!IS_ZEBRA_DEBUG_RIB) inet_ntop (AF_INET, &p->u.prefix, prefix_buf, INET_ADDRSTRLEN); zlog_err ("%s: %s/%d: rtm_write() unexpectedly returned %d for command %s", - __func__, prefix_buf, p->prefixlen, error, LOOKUP (rtm_type_str, cmd)); + __func__, prefix_buf, p->prefixlen, error, lookup (rtm_type_str, cmd)); break; } } /* if (cmd and flags make sense) */ else if (IS_ZEBRA_DEBUG_RIB) zlog_debug ("%s: odd command %s for flags %d", - __func__, LOOKUP (rtm_type_str, cmd), nexthop->flags); + __func__, lookup (rtm_type_str, cmd), nexthop->flags); } /* for (nexthop = ... */ /* If there was no useful nexthop, then complain. */ -- cgit v1.2.1