summaryrefslogtreecommitdiffstats
path: root/isisd/isis_pdu.c
diff options
context:
space:
mode:
authorChristian Franke <chris@opensourcerouting.org>2018-06-07 12:58:42 +0200
committerChristian Franke <chris@opensourcerouting.org>2018-09-05 11:38:13 +0200
commit414158882318898c970297d84d20935f4e4a7bb0 (patch)
treecfa4fd2384e53bb420b0bd83d78f75722efc96dd /isisd/isis_pdu.c
parentzebra: add a ZEBRA_FLAG_ONLINK so that routes bypass the is-unnumbered check (diff)
downloadfrr-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.c10
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);