mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 22:50:14 +00:00
zebra: export netlink function and change return
Instead of retuning always `0`, lets return the amount of used bytes for the message. This will be used by the new FPM interface to know how many bytes we must reserve for the output buffer. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
parent
b9c875150b
commit
f78fe8f3d6
@ -1531,8 +1531,8 @@ static bool nexthop_set_src(const struct nexthop *nexthop, int family,
|
||||
/*
|
||||
* Routing table change via netlink interface, using a dataplane context object
|
||||
*/
|
||||
static int netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
uint8_t *data, size_t datalen)
|
||||
ssize_t netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
uint8_t *data, size_t datalen)
|
||||
{
|
||||
int bytelen;
|
||||
struct nexthop *nexthop = NULL;
|
||||
@ -1636,7 +1636,7 @@ static int netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
* it.
|
||||
*/
|
||||
if (cmd == RTM_DELROUTE)
|
||||
return 0;
|
||||
return req->n.nlmsg_len;
|
||||
|
||||
if (dplane_ctx_get_mtu(ctx) || dplane_ctx_get_nh_mtu(ctx)) {
|
||||
char buf[NL_PKT_BUF_SIZE];
|
||||
@ -1680,7 +1680,8 @@ static int netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
addattr_l(&req->n, datalen, RTA_PREFSRC,
|
||||
&src.ipv6, bytelen);
|
||||
}
|
||||
return 0;
|
||||
|
||||
return req->n.nlmsg_len;
|
||||
}
|
||||
|
||||
/* Count overall nexthops so we can decide whether to use singlepath
|
||||
@ -1719,7 +1720,7 @@ static int netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
req->r.rtm_type = RTN_BLACKHOLE;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return req->n.nlmsg_len;
|
||||
}
|
||||
if (CHECK_FLAG(nexthop->flags,
|
||||
NEXTHOP_FLAG_RECURSIVE)) {
|
||||
@ -1818,7 +1819,7 @@ static int netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
zlog_debug("%s: No useful nexthop.", __func__);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return req->n.nlmsg_len;
|
||||
}
|
||||
|
||||
int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
|
||||
|
@ -66,6 +66,9 @@ void rt_netlink_init(void);
|
||||
/* MPLS label forwarding table change, using dataplane context information. */
|
||||
extern int netlink_mpls_multipath(int cmd, struct zebra_dplane_ctx *ctx);
|
||||
|
||||
extern ssize_t netlink_route_multipath(int cmd, struct zebra_dplane_ctx *ctx,
|
||||
uint8_t *data, size_t datalen);
|
||||
|
||||
extern int netlink_route_change(struct nlmsghdr *h, ns_id_t ns_id, int startup);
|
||||
extern int netlink_route_read(struct zebra_ns *zns);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user