mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-30 00:19:28 +00:00
lib: change vrf_is_mapped_on_netns API
The function handles not a vrf pointer instead of a vrf_id value. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
5ab5e410d0
commit
3d4c0b49da
@ -672,7 +672,8 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen,
|
|||||||
listener->fd = sock;
|
listener->fd = sock;
|
||||||
|
|
||||||
/* this socket needs a change of ns. record bgp back pointer */
|
/* this socket needs a change of ns. record bgp back pointer */
|
||||||
if (bgp->vrf_id != VRF_DEFAULT && vrf_is_mapped_on_netns(bgp->vrf_id))
|
if (bgp->vrf_id != VRF_DEFAULT && vrf_is_mapped_on_netns(
|
||||||
|
vrf_lookup_by_id(bgp->vrf_id)))
|
||||||
listener->bgp = bgp;
|
listener->bgp = bgp;
|
||||||
|
|
||||||
memcpy(&listener->su, sa, salen);
|
memcpy(&listener->su, sa, salen);
|
||||||
|
3
lib/if.c
3
lib/if.c
@ -393,7 +393,8 @@ struct interface *if_get_by_name(const char *name, vrf_id_t vrf_id, int vty)
|
|||||||
* this should not be considered as an update
|
* this should not be considered as an update
|
||||||
* then create the new interface
|
* then create the new interface
|
||||||
*/
|
*/
|
||||||
if (ifp->vrf_id != vrf_id && vrf_is_mapped_on_netns(vrf_id))
|
if (ifp->vrf_id != vrf_id && vrf_is_mapped_on_netns(
|
||||||
|
vrf_lookup_by_id(vrf_id)))
|
||||||
return if_create(name, vrf_id);
|
return if_create(name, vrf_id);
|
||||||
/* If it came from the kernel
|
/* If it came from the kernel
|
||||||
* or by way of zclient, believe it and update
|
* or by way of zclient, believe it and update
|
||||||
|
@ -682,10 +682,8 @@ int vrf_netns_handler_create(struct vty *vty, struct vrf *vrf, char *pathname,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int vrf_is_mapped_on_netns(vrf_id_t vrf_id)
|
int vrf_is_mapped_on_netns(struct vrf *vrf)
|
||||||
{
|
{
|
||||||
struct vrf *vrf = vrf_lookup_by_id(vrf_id);
|
|
||||||
|
|
||||||
if (!vrf || vrf->data.l.netns_name[0] == '\0')
|
if (!vrf || vrf->data.l.netns_name[0] == '\0')
|
||||||
return 0;
|
return 0;
|
||||||
if (vrf->vrf_id == VRF_DEFAULT)
|
if (vrf->vrf_id == VRF_DEFAULT)
|
||||||
@ -887,7 +885,7 @@ int vrf_bind(vrf_id_t vrf_id, int fd, char *name)
|
|||||||
|
|
||||||
if (fd < 0 || name == NULL)
|
if (fd < 0 || name == NULL)
|
||||||
return fd;
|
return fd;
|
||||||
if (vrf_is_mapped_on_netns(vrf_id))
|
if (vrf_is_mapped_on_netns(vrf_lookup_by_id(vrf_id)))
|
||||||
return fd;
|
return fd;
|
||||||
#ifdef SO_BINDTODEVICE
|
#ifdef SO_BINDTODEVICE
|
||||||
ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name)+1);
|
ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name)+1);
|
||||||
|
@ -237,7 +237,7 @@ extern vrf_id_t vrf_get_default_id(void);
|
|||||||
#define VRF_DEFAULT vrf_get_default_id()
|
#define VRF_DEFAULT vrf_get_default_id()
|
||||||
|
|
||||||
/* VRF is mapped on netns or not ? */
|
/* VRF is mapped on netns or not ? */
|
||||||
int vrf_is_mapped_on_netns(vrf_id_t vrf_id);
|
int vrf_is_mapped_on_netns(struct vrf *vrf);
|
||||||
|
|
||||||
/* VRF switch from NETNS */
|
/* VRF switch from NETNS */
|
||||||
extern int vrf_switch_to_netns(vrf_id_t vrf_id);
|
extern int vrf_switch_to_netns(vrf_id_t vrf_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user