当设备有多个出接口时,如果希望dhcp报文从指定的接口送出去,可以用setsockopt()函数来指定设备和接口mark。例如这样的代码片段指定从接口nbif1发送报文,其mark值为11。
int iFd =0;
struct ifreq ifInfo;
INT32 dNfmark = 0;
iFd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset(&ifInfo,0,sizeof(ifInfo));
strcpy(ifInfo.ifr_ifrn.ifrn_name, “nbif1”); /*指定nbif1*/
setsockopt(iFd, SOL_SOCKET, SO_BINDTODEVICE, (char*)&ifInfo, sizeof(ifInfo));
dNfmark=11;/*mark*/
setsockopt(iFd, SOL_SOCKET, SO_MARK, (char *)&dNfmark, sizeof(dNfmark));