]> git.proxmox.com Git - mirror_frr.git/commit - lib/zclient.c
lib/zserv: introduce address-family independent ZAPI message types
authorRenato Westphal <renato@opensourcerouting.org>
Sun, 20 Aug 2017 00:59:41 +0000 (21:59 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Wed, 23 Aug 2017 20:45:17 +0000 (17:45 -0300)
commit0e51b4a368257d54b1e07ff74492ea4705de97f7
treec213ed50bdf21a94fd031cc6abd838bff3c343e4
parentbb1b9c47ca090ce4484e1f8061f17b5c33f578ee
lib/zserv: introduce address-family independent ZAPI message types

As noticed in 657cde1, the zapi_ipv[4|6]_route functions are broken in
many ways and that's the reason that many client daemons (e.g. ospfd,
isisd) need to send handcrafted messages to zebra.

The zapi_route() function introduced by Donald solves the problem
by providing a consistent way to send ipv4/ipv6 routes to zebra with
nexthops of any type, in all possible combinations including IPv4 routes
with IPv6 nexthops (for BGP unnumbered routes).

This patch goes a bit further and creates two new address-family
independent ZAPI message types that the client daemons can
use to advertise route information to zebra: ZEBRA_ROUTE_ADD and
ZEBRA_ROUTE_DELETE. The big advantage of having address-family independent
messages is that it allows us to remove a lot of duplicate code in zebra
and in the client daemons.

This patch also introduces the zapi_route_decode() function. It will be
used by zebra to decode route messages sent by the client daemons using
zclient_route_send(), which calls zapi_route_encode().

Later on we'll use this same pair of encode/decode functions to
send/receive redistributed routes from zebra to the client daemons,
taking the idea of removing code duplication to the next level.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
babeld/kernel.c
lib/log.c
lib/zclient.c
lib/zclient.h
zebra/zserv.c