diff options
author | Christian Franke <chris@opensourcerouting.org> | 2018-06-07 12:58:42 +0200 |
---|---|---|
committer | Christian Franke <chris@opensourcerouting.org> | 2018-09-05 11:38:13 +0200 |
commit | 414158882318898c970297d84d20935f4e4a7bb0 (patch) | |
tree | cfa4fd2384e53bb420b0bd83d78f75722efc96dd /isisd/isis_pdu.c | |
parent | zebra: add a ZEBRA_FLAG_ONLINK so that routes bypass the is-unnumbered check (diff) | |
download | frr-414158882318898c970297d84d20935f4e4a7bb0.tar.xz frr-414158882318898c970297d84d20935f4e4a7bb0.zip |
fabricd: add support for completely unnumbered operation
With this commit, fabricd can run without any IPv4 addresses configured
except on loopback. There are two changes to achieve this:
a) If a circuit has no IPv4 address configured, fabricd will resort to
advertise the routers loopback IP in the OpenFabric hellos.
b) All the routes from OpenFabric are sent with ZEBRA_FLAG_ONLINK set,
so that zebra will install them into the fib without checking whether
the nexthop is reachable
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_pdu.c')
-rw-r--r-- | isisd/isis_pdu.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c index fc9ff5143..88575f531 100644 --- a/isisd/isis_pdu.c +++ b/isisd/isis_pdu.c @@ -679,7 +679,7 @@ static int process_hello(uint8_t pdu_type, struct isis_circuit *circuit, goto out; } - iih.v4_usable = (circuit->ip_addrs && listcount(circuit->ip_addrs) + iih.v4_usable = (fabricd_ip_addrs(circuit) && iih.tlvs->ipv4_address.count); iih.v6_usable = (circuit->ipv6_link && listcount(circuit->ipv6_link) @@ -1689,8 +1689,12 @@ int send_hello(struct isis_circuit *circuit, int level) false, false); } - if (circuit->ip_router && circuit->ip_addrs) - isis_tlvs_add_ipv4_addresses(tlvs, circuit->ip_addrs); + if (circuit->ip_router) { + struct list *circuit_ip_addrs = fabricd_ip_addrs(circuit); + + if (circuit_ip_addrs) + isis_tlvs_add_ipv4_addresses(tlvs, circuit_ip_addrs); + } if (circuit->ipv6_router && circuit->ipv6_link) isis_tlvs_add_ipv6_addresses(tlvs, circuit->ipv6_link); |