Add a config option to set the advertised BGP next hop.
authorBenjamin Cama <benoar@dolka.fr>
Thu, 7 Jul 2011 11:12:30 +0000 (13:12 +0200)
committerBenjamin Cama <benoar@dolka.fr>
Fri, 29 Jul 2011 10:58:31 +0000 (12:58 +0200)
Signed-off-by: Benjamin Cama <benoar@dolka.fr>
bgp.c
l2tpns.c
l2tpns.h

diff --git a/bgp.c b/bgp.c
index f643921..8e722de 100644 (file)
--- a/bgp.c
+++ b/bgp.c
@@ -195,7 +195,14 @@ int bgp_start(struct bgp_peer *peer, char *name, int as, int keepalive,
     /* NEXT_HOP */
     a.flags = BGP_PATH_ATTR_FLAG_TRANS;
     a.code = BGP_PATH_ATTR_CODE_NEXT_HOP;
-    ip = my_address; /* we're it */
+    if (config->nexthop_address)
+    {
+       ip = config->nexthop_address;
+    }
+    else
+    {
+       ip = my_address; /* we're it */
+    }
     a.data.s.len = sizeof(ip);
     memcpy(a.data.s.value, &ip, sizeof(ip));
 
index b745b3f..39b09b5 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -159,6 +159,7 @@ config_descriptt config_values[] = {
        CONFIG("ipv6_prefix", ipv6_prefix, IPv6),
        CONFIG("cli_bind_address", cli_bind_address, IPv4),
        CONFIG("hostname", hostname, STRING),
+       CONFIG("nexthop_address", nexthop_address, IPv4),
        { NULL, 0, 0, 0 },
 };
 
index 4df0a5a..e6357b6 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -728,6 +728,7 @@ typedef struct
                int hold;
                struct in_addr update_source;
        } neighbour[BGP_NUM_PEERS];
+       in_addr_t       nexthop_address;
 #endif
 } configt;