mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-04 04:04:09 +00:00
lib: use the correct VRF ID when parsing INTERFACE_LINK_PARAMS messages
Bug found during code inspection. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
d763789879
commit
edc127627d
@ -219,11 +219,11 @@ static int isis_zebra_if_address_del(int command, struct zclient *client,
|
||||
}
|
||||
|
||||
static int isis_zebra_link_params(int command, struct zclient *zclient,
|
||||
zebra_size_t length)
|
||||
zebra_size_t length, vrf_id_t vrf_id)
|
||||
{
|
||||
struct interface *ifp;
|
||||
|
||||
ifp = zebra_interface_link_params_read(zclient->ibuf);
|
||||
ifp = zebra_interface_link_params_read(zclient->ibuf, vrf_id);
|
||||
|
||||
if (ifp == NULL)
|
||||
return 0;
|
||||
|
@ -1495,7 +1495,8 @@ static void link_params_set_value(struct stream *s, struct if_link_params *iflp)
|
||||
iflp->use_bw = stream_getf(s);
|
||||
}
|
||||
|
||||
struct interface *zebra_interface_link_params_read(struct stream *s)
|
||||
struct interface *zebra_interface_link_params_read(struct stream *s,
|
||||
vrf_id_t vrf_id)
|
||||
{
|
||||
struct if_link_params *iflp;
|
||||
ifindex_t ifindex;
|
||||
@ -1504,7 +1505,7 @@ struct interface *zebra_interface_link_params_read(struct stream *s)
|
||||
|
||||
ifindex = stream_getl(s);
|
||||
|
||||
struct interface *ifp = if_lookup_by_index(ifindex, VRF_DEFAULT);
|
||||
struct interface *ifp = if_lookup_by_index(ifindex, vrf_id);
|
||||
|
||||
if (ifp == NULL) {
|
||||
flog_err(EC_LIB_ZAPI_ENCODE,
|
||||
@ -2581,7 +2582,7 @@ static int zclient_read(struct thread *thread)
|
||||
case ZEBRA_INTERFACE_LINK_PARAMS:
|
||||
if (zclient->interface_link_params)
|
||||
(*zclient->interface_link_params)(command, zclient,
|
||||
length);
|
||||
length, vrf_id);
|
||||
break;
|
||||
case ZEBRA_FEC_UPDATE:
|
||||
if (zclient_debug)
|
||||
|
@ -229,7 +229,7 @@ struct zclient {
|
||||
int (*interface_address_add)(int, struct zclient *, uint16_t, vrf_id_t);
|
||||
int (*interface_address_delete)(int, struct zclient *, uint16_t,
|
||||
vrf_id_t);
|
||||
int (*interface_link_params)(int, struct zclient *, uint16_t);
|
||||
int (*interface_link_params)(int, struct zclient *, uint16_t, vrf_id_t);
|
||||
int (*interface_bfd_dest_update)(int, struct zclient *, uint16_t,
|
||||
vrf_id_t);
|
||||
int (*interface_nbr_address_add)(int, struct zclient *, uint16_t,
|
||||
@ -564,7 +564,8 @@ extern struct interface *zebra_interface_vrf_update_read(struct stream *s,
|
||||
extern void zebra_interface_if_set_value(struct stream *, struct interface *);
|
||||
extern void zebra_router_id_update_read(struct stream *s, struct prefix *rid);
|
||||
|
||||
extern struct interface *zebra_interface_link_params_read(struct stream *);
|
||||
extern struct interface *zebra_interface_link_params_read(struct stream *s,
|
||||
vrf_id_t vrf_id);
|
||||
extern size_t zebra_interface_link_params_write(struct stream *,
|
||||
struct interface *);
|
||||
extern int zclient_send_get_label_chunk(
|
||||
|
@ -340,11 +340,11 @@ static int ospf_interface_address_delete(int command, struct zclient *zclient,
|
||||
}
|
||||
|
||||
static int ospf_interface_link_params(int command, struct zclient *zclient,
|
||||
zebra_size_t length)
|
||||
zebra_size_t length, vrf_id_t vrf_id)
|
||||
{
|
||||
struct interface *ifp;
|
||||
|
||||
ifp = zebra_interface_link_params_read(zclient->ibuf);
|
||||
ifp = zebra_interface_link_params_read(zclient->ibuf, vrf_id);
|
||||
|
||||
if (ifp == NULL)
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user