Skip to content

Commit 130366f

Browse files
Dando-Real-ITAjech
authored andcommitted
Added router id to install filter
The router id allows to assign origin-based pref-src. A use case is, when installing default routes originated by two edge routers with different subnets, and the client has 2 ips matching the separate subnets install ip 0.0.0.0/0 eq 0 id 00:02:00:00:00:00:1d:01 pref-src 66.199.5.163 install ip 0.0.0.0/0 eq 0 id 00:02:00:00:00:00:1d:00 pref-src 12.144.66.186
1 parent 926e1ac commit 130366f

3 files changed

Lines changed: 7 additions & 4 deletions

File tree

configuration.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,13 +1503,14 @@ redistribute_filter(const unsigned char *prefix, unsigned short plen,
15031503
}
15041504

15051505
int
1506-
install_filter(const unsigned char *prefix, unsigned short plen,
1506+
install_filter(const unsigned char *id,
1507+
const unsigned char *prefix, unsigned short plen,
15071508
const unsigned char *src_prefix, unsigned short src_plen,
15081509
unsigned int ifindex,
15091510
struct filter_result *result)
15101511
{
15111512
int res;
1512-
res = do_filter(install_filters, NULL, prefix, plen,
1513+
res = do_filter(install_filters, id, prefix, plen,
15131514
src_prefix, src_plen, NULL, ifindex, 0, result);
15141515
if(res < 0)
15151516
res = INFINITY;

configuration.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ int redistribute_filter(const unsigned char *prefix, unsigned short plen,
8484
const unsigned char *src_prefix, unsigned short src_plen,
8585
unsigned int ifindex, int proto,
8686
struct filter_result *result);
87-
int install_filter(const unsigned char *prefix, unsigned short plen,
87+
int install_filter(const unsigned char *id,
88+
const unsigned char *prefix, unsigned short plen,
8889
const unsigned char *src_prefix, unsigned short src_plen,
8990
unsigned int ifindex, struct filter_result *result);
9091
int finalise_config(void);

route.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,8 @@ change_route(int operation, const struct babel_route *route, int metric,
447447
unsigned int ifindex = route->neigh->ifp->ifindex;
448448
int m, table;
449449

450-
m = install_filter(route->src->prefix, route->src->plen,
450+
m = install_filter(route->src->id,
451+
route->src->prefix, route->src->plen,
451452
route->src->src_prefix, route->src->src_plen,
452453
ifindex, &filter_result);
453454
if(m >= INFINITY && operation == ROUTE_ADD) {

0 commit comments

Comments
 (0)