diff options
author | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-12-18 21:58:08 +0100 |
---|---|---|
committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-12-18 21:58:08 +0100 |
commit | 79a80af8b4dd59af84f4cc9a9a7488f0e9adb6e7 (patch) | |
tree | fe71da86a905b4a1c2c83801a5cf91cfd04b4607 /lib/vrf.h | |
parent | vrrpd: add vrf support (diff) | |
download | frr-79a80af8b4dd59af84f4cc9a9a7488f0e9adb6e7.tar.xz frr-79a80af8b4dd59af84f4cc9a9a7488f0e9adb6e7.zip |
lib: document vrf_socket(), vrf_bind()
These two don't really do what you might expect, document them
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'lib/vrf.h')
-rw-r--r-- | lib/vrf.h | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -218,13 +218,36 @@ extern void vrf_terminate(void); * or call network operations */ -/* Create a socket serving for the given VRF */ +/* + * Create a new socket associated with a VRF. + * + * This is a wrapper that ensures correct behavior when using namespace VRFs. + * In the namespace case, the socket is created within the namespace. In the + * non-namespace case, this is equivalent to socket(). + * + * If name is provided, this is provided to vrf_bind() to bind the socket to + * the VRF. This is only relevant when using VRF-lite. + * + * Summary: + * - Namespace: pass vrf_id but not name + * - VRF-lite: pass vrf_id and name of VRF device to bind to + * - VRF-lite, no binding: pass vrf_id but not name, or just use socket() + */ extern int vrf_socket(int domain, int type, int protocol, vrf_id_t vrf_id, const char *name); extern int vrf_sockunion_socket(const union sockunion *su, vrf_id_t vrf_id, const char *name); +/* + * Binds a socket to a VRF device. + * + * If name is null, the socket is not bound, irrespective of any other + * arguments. + * + * name should be the name of the VRF device. vrf_id should be the + * corresponding vrf_id (the ifindex of the device). + */ extern int vrf_bind(vrf_id_t vrf_id, int fd, const char *name); /* VRF ioctl operations */ |