lib: Make distribute.c accepts both v4 and v6.
distribute.c doesn't allow to manage both v4 and v6 distribute lists. This
patch fix this problem by having 4 DISTRIBUTE* values in the enumeration instead
of two. The code in all daemons using distribute.c is adapted.
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index dd54440..9105831 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -615,7 +615,7 @@
struct access_list *alist;
struct prefix_list *plist;
int distribute = ripng_distribute == RIPNG_FILTER_OUT ?
- DISTRIBUTE_OUT : DISTRIBUTE_IN;
+ DISTRIBUTE_V6_OUT : DISTRIBUTE_V6_IN;
const char *inout = ripng_distribute == RIPNG_FILTER_OUT ? "out" : "in";
/* Input distribute-list filtering. */
@@ -2757,9 +2757,9 @@
ri = ifp->info;
- if (dist->list[DISTRIBUTE_IN])
+ if (dist->list[DISTRIBUTE_V6_IN])
{
- alist = access_list_lookup (AFI_IP6, dist->list[DISTRIBUTE_IN]);
+ alist = access_list_lookup (AFI_IP6, dist->list[DISTRIBUTE_V6_IN]);
if (alist)
ri->list[RIPNG_FILTER_IN] = alist;
else
@@ -2768,9 +2768,9 @@
else
ri->list[RIPNG_FILTER_IN] = NULL;
- if (dist->list[DISTRIBUTE_OUT])
+ if (dist->list[DISTRIBUTE_V6_OUT])
{
- alist = access_list_lookup (AFI_IP6, dist->list[DISTRIBUTE_OUT]);
+ alist = access_list_lookup (AFI_IP6, dist->list[DISTRIBUTE_V6_OUT]);
if (alist)
ri->list[RIPNG_FILTER_OUT] = alist;
else
@@ -2779,9 +2779,9 @@
else
ri->list[RIPNG_FILTER_OUT] = NULL;
- if (dist->prefix[DISTRIBUTE_IN])
+ if (dist->prefix[DISTRIBUTE_V6_IN])
{
- plist = prefix_list_lookup (AFI_IP6, dist->prefix[DISTRIBUTE_IN]);
+ plist = prefix_list_lookup (AFI_IP6, dist->prefix[DISTRIBUTE_V6_IN]);
if (plist)
ri->prefix[RIPNG_FILTER_IN] = plist;
else
@@ -2790,9 +2790,9 @@
else
ri->prefix[RIPNG_FILTER_IN] = NULL;
- if (dist->prefix[DISTRIBUTE_OUT])
+ if (dist->prefix[DISTRIBUTE_V6_OUT])
{
- plist = prefix_list_lookup (AFI_IP6, dist->prefix[DISTRIBUTE_OUT]);
+ plist = prefix_list_lookup (AFI_IP6, dist->prefix[DISTRIBUTE_V6_OUT]);
if (plist)
ri->prefix[RIPNG_FILTER_OUT] = plist;
else