I am trying to get the destination address of an incoming udp packet with getsockopt(). According to the man pages flag IP_PKTINFO should do that. But it doesn't work: struct in_pktinfo pktinfo; socklen_t optlen; struct in_addr local_addr; optlen=(socklen_t)sizeof(pktinfo); syslog (LOG_ERR, "ERR %d", getsockopt(fd, SOL_IP, IP_PKTINFO, &pktinfo, &optlen)); syslog (LOG_ERR, "LENGTH %d %d", (int)optlen, sizeof(pktinfo)); local_addr=pktinfo.ipi_addr; syslog (LOG_ERR,"ADDR %s",inet_ntoa(local_addr)); results in /var/log/messages: Dec 19 19:27:49 coda tftpd[20081]: ERR 0 Dec 19 19:27:49 coda tftpd[20081]: LENGTH 4 12 Dec 19 19:27:49 coda tftpd[20081]: ADDR 232.252.255.191 While getsockopt() returns no error, the resulting length is too short and the addr is definitely invalid. I would expect either getsockopt() to return -1, it this is not implemented or return at least 12 valid bytes. (I am running a 2.2.16 kernel with glibc 2.1.3.) I even tried the 'hard way' using recvmsg() but the resulting msg_controllen == 0. Background: If a machine has more than one address in a single network, i.e. eth0 192.168.0.10 eth0:1 192.168.0.20 a call to bind() normally assigns the primary ip address (.10) to the socket. If the server was addressed on his second address (.20) the request is not answered and fails. I have this problem with tftpd. Or is there a better way to get the destination address of an incoming udp packet? Thanks for any help. Cord Seele PS: Please CC me since I am not an the list. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/