Opened 10 years ago
Last modified 10 years ago
#626 closed defect
SO_IPLINK socket option lacks important functionality of SO_BINDTODEVICE — at Version 3
Reported by: | Martin Decky | Owned by: | Jiri Svoboda |
---|---|---|---|
Priority: | major | Milestone: | 0.7.0 |
Component: | helenos/net/udp | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description (last modified by ) ¶
The currently implemented SO_IPLINK socket option in the UDP server lacks one important functionality of SO_BINDTODEVICE in Linux.
In Linux, the SO_BINDTODEVICE option is used to allow the DHCP client to configure multiple network devices by binding multiple sockets to the same source pair (INADDR_ANY, 68), but on different network devices.
Change History (3)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Yes, the SO_IPLINK option was apparently meant as HelenOS equivalent of SO_BINDTODEVICE from Linux. I am going to edit this ticket to reflect that.
However, this does not change the actual problem:
- The DHCP client sets the SO_IPLINK option only after it tries to bind the socket to the colliding source pair (INADDR_ANY, 68). This is not very helpful.
- The SO_IPLINK option does not lift the requirement for globally unique source pairs in the UDP server.
comment:3 by , 10 years ago
Component: | helenos/net/socket → helenos/net/udp |
---|---|
Description: | modified (diff) |
Owner: | set to |
Summary: | SO_BINDTODEVICE socket option not implemented → SO_IPLINK socket option lacks important functionality of SO_BINDTODEVICE |
Note:
See TracTickets
for help on using tickets.
DHCP would not work at all if if could not specify which link to operate on (because the outgoing datagrams must not be routed). Instead of Linux SO_BINDTODEVICE HelenOS's DHCP uses HelenOS-specific SO_IPLINK which allows you to specify the service ID of the IP link to bind the socket to.
SO_IPLINK works to the extent that it will send datagrams to the right link (when you run enable DHCP only on one link). With multiple links, we probably hit several issues: