--- zzzz-none-000/linux-2.6.28.10/net/ipv6/datagram.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/net/ipv6/datagram.c 2011-04-05 15:54:27.000000000 +0000 @@ -147,6 +147,7 @@ ipv6_addr_copy(&fl.fl6_dst, &np->daddr); ipv6_addr_copy(&fl.fl6_src, &np->saddr); fl.oif = sk->sk_bound_dev_if; + fl.mark = sk->sk_mark; fl.fl_ip_dport = inet->dport; fl.fl_ip_sport = inet->sport; @@ -397,6 +398,19 @@ put_cmsg(msg, SOL_IPV6, IPV6_PKTINFO, sizeof(src_info), &src_info); } +#ifdef CONFIG_TI_IP_PKTINFO_SOCKOPT + if (np->rxopt.bits.ti_rxinfo) { + struct ti_pktinfo info; + struct ethhdr *ehdr; + + info.ifcpe_side = skb->ti_meta_info; + skb->ti_meta_info=0; + ehdr = eth_hdr(skb); + memcpy( info.mac_addr, ehdr->h_source, sizeof(info.mac_addr)); + put_cmsg(msg, SOL_IPV6, TI_IPV6_PKTINFO, sizeof(info), &info); + } +#endif + if (np->rxopt.bits.rxhlim) { int hlim = ipv6_hdr(skb)->hop_limit; put_cmsg(msg, SOL_IPV6, IPV6_HOPLIMIT, sizeof(hlim), &hlim);