mirror of
https://github.com/nmap/nmap.git
synced 2025-12-22 23:49:03 +00:00
Add socket_bindtodevice function to Nbase.
The Linux-specific SO_BINDTODEVICE sockopt causes packets to be sent on a specific interface, in cases where merely setting the source address does not uniquely determine the interface.
This commit is contained in:
@@ -281,6 +281,18 @@ int block_socket(int sd) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Use the SO_BINDTODEVICE sockopt to bind with a specific interface (Linux
|
||||
only). Pass NULL or an empty string to remove device binding. */
|
||||
int socket_bindtodevice(int sd, const char *device) {
|
||||
#ifdef SO_BINDTODEVICE
|
||||
/* Linux-specific sockopt asking to use a specific interface. See socket(7). */
|
||||
if (setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device) + 1) < 0)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Convert a time specification into a count of seconds. A time specification is
|
||||
* a non-negative real number, possibly followed by a units suffix. The suffixes
|
||||
* are "ms" for milliseconds, "s" for seconds, "m" for minutes, or "h" for
|
||||
|
||||
Reference in New Issue
Block a user