]> git.puffer.fish Git - mirror/frr.git/commit
zebra, lib: handle NEIGH_ADD/DELETE to zebra dataplane framework
authorPhilippe Guibert <philippe.guibert@6wind.com>
Thu, 25 Feb 2021 10:12:34 +0000 (11:12 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 9 Apr 2021 16:29:58 +0000 (18:29 +0200)
commit0a27a2fef5bfd6135d7deed8c0bab6a42e30568a
treec94cfc939367cd11d4bb06210772bd8a787300e5
parent541025d6ffe2bee713cef8d5572a15d2b3dc5d11
zebra, lib: handle NEIGH_ADD/DELETE to zebra dataplane framework

EVPN neighbor operations were already done in the zebra dataplane
framework. Now that NHRP is able to use zebra to perform neighbor IP
operations (by programming link IP operations), handle this operation
under dataplane framework:
- assign two new operations NEIGH_IP_INSTALL and NEIGH_IP_DELETE; this
is reserved for GRE like interfaces:
example: ip neigh add A.B.C.D lladdr E.F.G.H
- use 'struct ipaddr' to store and encode the link ip address
- reuse dplane_neigh_info, and create an union with mac address
- reuse the protocol type and use it for neighbor operations; this
permits to store the daemon originating this neighbor operation.
a new route type is created: ZEBRA_ROUTE_NEIGH.
- the netlink level functions will handle a pointer, and a type; the
type indicates the family of the pointer: AF_INET or AF_INET6 if the
link type is an ip address, mac address otherwise.
- to keep backward compatibility with old queries, as no extension was
done, an option NEIGH_NO_EXTENSION has been put in place
- also, 2 new state flags are used: NUD_PERMANENT and NUD_FAILED.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
lib/route_types.txt
lib/zclient.h
zebra/kernel_netlink.c
zebra/rt_netlink.c
zebra/zapi_msg.c
zebra/zebra_dplane.c
zebra/zebra_dplane.h
zebra/zebra_nhg.c
zebra/zebra_rib.c