ipv6: Add IPV6_PKTINFO sticky option support to setsockopt()
authorYang Hongyang <yanghy@cn.fujitsu.com>
Tue, 16 Dec 2008 10:06:23 +0000 (02:06 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Dec 2008 10:06:23 +0000 (02:06 -0800)
commitb24a2516d10751d7ed5afb58420df25370c9dffb
treecffcf4fc47c4da696e3426424e6ccac7b789e917
parentbc02ff95fe4ebd3e5ee7455c0aa6f76ebe39ebca
ipv6: Add IPV6_PKTINFO sticky option support to setsockopt()

There are three reasons for me to add this support:
1.When no interface is specified in an IPV6_PKTINFO ancillary data
  item, the interface specified in an IPV6_PKTINFO sticky optionis
  is used.

RFC3542:
6.7.  Summary of Outgoing Interface Selection

   This document and [RFC-3493] specify various methods that affect the
   selection of the packet's outgoing interface.  This subsection
   summarizes the ordering among those in order to ensure deterministic
   behavior.

   For a given outgoing packet on a given socket, the outgoing interface
   is determined in the following order:

   1. if an interface is specified in an IPV6_PKTINFO ancillary data
      item, the interface is used.

   2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky
      option, the interface is used.

2.When no IPV6_PKTINFO ancillary data is received,getsockopt() should
  return the sticky option value which set with setsockopt().

RFC 3542:
   Issuing getsockopt() for the above options will return the sticky
   option value i.e., the value set with setsockopt().  If no sticky
   option value has been set getsockopt() will return the following
   values:

3.Make the setsockopt implementation POSIX compliant.

Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/ipv6.h
net/ipv6/ipv6_sockglue.c