Switch from setfib(2) moving the process to a different FIB to setsockopt(2)
with SO_SETFIB to only tag the socket with the right FIB. That way either setfib(1) or nc -V can be used depending on what wants to be achieved. This also allows nc to be used for simple regression testing of either feature. Sponsored by: Cisco Systems, Inc.
This commit is contained in:
parent
9836132cd1
commit
aaf04b7cb6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/multi-fibv6/head/; revision=231670
@ -605,8 +605,10 @@ remote_connect(const char *host, const char *port, struct addrinfo hints)
|
||||
#endif
|
||||
|
||||
if (rtableid) {
|
||||
if (setfib(rtableid) == -1)
|
||||
err(1, "setfib");
|
||||
if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
|
||||
sizeof(rtableid)) == -1)
|
||||
err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
|
||||
rtableid);
|
||||
}
|
||||
|
||||
/* Bind to a local port or source address if specified. */
|
||||
@ -678,8 +680,11 @@ local_listen(char *host, char *port, struct addrinfo hints)
|
||||
continue;
|
||||
|
||||
if (rtableid) {
|
||||
if (setfib(rtableid) == -1)
|
||||
err(1, "setfib");
|
||||
ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid,
|
||||
sizeof(rtableid));
|
||||
if (ret == -1)
|
||||
err(1, "setsockopt(.., SO_SETFIB, %u, ..)",
|
||||
rtableid);
|
||||
}
|
||||
|
||||
ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x));
|
||||
|
Loading…
Reference in New Issue
Block a user