[ Team LiB ] Previous Section Next Section

Chapter 28

28.1

The version number field and the next header field in the IPv6 header are not available. The payload length field is available as either an argument to one of the output functions or as the return value from one of the input functions. But, if a jumbo payload option is required, that actual option itself is not available to an application. The fragment header is also not available to an application.

28.2

Eventually, the client's socket receive buffer will fill, causing the daemon's write to block. We do not want this to happen, as that stops the daemon from handling any more data on any of its sockets. The easiest solution is for the daemon to set its end of the Unix domain connection to the client to nonblocking. The daemon must then call write instead of the wrapper function Write and just ignore an error of EWOULDBLOCK.

28.3

28.3 Berkeley-derived kernels, by default, allow broadcasting on a raw socket (p.1057 of TCPv2). The SO_BROADCAST socket option needs to be specified only for UDP sockets.

28.4

Our program does not check for a multicast address and does not set the IP_MULTICAST_IF socket option. Therefore, the kernel chooses the outgoing interface, probably by searching the routing table for 224.0.0.1. We also do not set the IP_MULTICAST_TTL field, so it defaults to 1, which is acceptable.


    [ Team LiB ] Previous Section Next Section