Print this page
13175 Add support for IP_RECVTOS
13182 CMSG_ macros should have man pages
Change-ID: I784aa36cfd3c17e3cccbf1fd329fa7e69b663ef9

*** 1316,1327 **** if (oldflg) continue; cmsg->cmsg_level = tohp->level; cmsg->cmsg_type = tohp->name; ! cmsg->cmsg_len = (socklen_t)(_TPI_TOPT_DATALEN(tohp) + ! sizeof (struct cmsghdr)); /* copy content to control data part */ bcopy(&tohp[1], CMSG_CONTENT(cmsg), CMSG_CONTENTLEN(cmsg)); } --- 1316,1343 ---- if (oldflg) continue; cmsg->cmsg_level = tohp->level; cmsg->cmsg_type = tohp->name; ! cmsg->cmsg_len = (socklen_t)sizeof (struct cmsghdr); ! if (tohp->level == IPPROTO_IP && ! (tohp->name == IP_RECVTOS || ! tohp->name == IP_RECVTTL)) { ! /* ! * The data for these is a uint8_t but, in ! * order to maintain alignment for any ! * following TPI primitives in the message, ! * there will be some trailing padding bytes ! * which are included in the TPI_TOPT_DATALEN. ! * For these types, we set the cmsg_len ! * explicitly to the correct value. ! */ ! cmsg->cmsg_len += (socklen_t)sizeof (uint8_t); ! } else { ! cmsg->cmsg_len += ! (socklen_t)(_TPI_TOPT_DATALEN(tohp)); ! } /* copy content to control data part */ bcopy(&tohp[1], CMSG_CONTENT(cmsg), CMSG_CONTENTLEN(cmsg)); }