diff -r 3591c18acabc ipv4/control.go --- a/ipv4/control.go Wed Aug 07 12:55:39 2013 +1000 +++ b/ipv4/control.go Fri Aug 09 00:40:54 2013 +1000 @@ -40,6 +40,7 @@ // TTL int // time-to-live, receiving only Src net.IP // source address, specifying only + SpecDst net.IP // local address of packet Dst net.IP // destination address, receiving only IfIndex int // interface index, must be 1 <= value when specifying } @@ -48,5 +49,5 @@ if cm == nil { return "" } - return fmt.Sprintf("ttl: %v, src: %v, dst: %v, ifindex: %v", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) + return fmt.Sprintf("ttl: %v, src: %v, specdst: %v, dst: %v, ifindex: %v", cm.TTL, cm.Src, cm.SpecDst, cm.Dst, cm.IfIndex) } diff -r 3591c18acabc ipv4/control_linux.go --- a/ipv4/control_linux.go Wed Aug 07 12:55:39 2013 +1000 +++ b/ipv4/control_linux.go Fri Aug 09 00:40:54 2013 +1000 @@ -89,6 +89,7 @@ case syscall.IP_PKTINFO: pi := (*syscall.Inet4Pktinfo)(unsafe.Pointer(&m.Data[0])) cm.IfIndex = int(pi.Ifindex) + cm.SpecDst = pi.Spec_dst[:] cm.Dst = pi.Addr[:] } }