Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/ip6_output.c
Show First 20 Lines • Show All 1,539 Lines • ▼ Show 20 Lines | #endif | ||||
case IPV6_RECVPATHMTU: | case IPV6_RECVPATHMTU: | ||||
case IPV6_RECVTCLASS: | case IPV6_RECVTCLASS: | ||||
case IPV6_RECVFLOWID: | case IPV6_RECVFLOWID: | ||||
#ifdef RSS | #ifdef RSS | ||||
case IPV6_RECVRSSBUCKETID: | case IPV6_RECVRSSBUCKETID: | ||||
#endif | #endif | ||||
case IPV6_V6ONLY: | case IPV6_V6ONLY: | ||||
case IPV6_AUTOFLOWLABEL: | case IPV6_AUTOFLOWLABEL: | ||||
case IPV6_ORIGDSTADDR: | |||||
case IPV6_BINDANY: | case IPV6_BINDANY: | ||||
case IPV6_BINDMULTI: | case IPV6_BINDMULTI: | ||||
#ifdef RSS | #ifdef RSS | ||||
case IPV6_RSS_LISTEN_BUCKET: | case IPV6_RSS_LISTEN_BUCKET: | ||||
#endif | #endif | ||||
if (optname == IPV6_BINDANY && td != NULL) { | if (optname == IPV6_BINDANY && td != NULL) { | ||||
error = priv_check(td, | error = priv_check(td, | ||||
PRIV_NETINET_BINDANY); | PRIV_NETINET_BINDANY); | ||||
▲ Show 20 Lines • Show All 169 Lines • ▼ Show 20 Lines | #endif | ||||
break; | break; | ||||
} | } | ||||
OPTSET(IN6P_TCLASS); | OPTSET(IN6P_TCLASS); | ||||
break; | break; | ||||
case IPV6_AUTOFLOWLABEL: | case IPV6_AUTOFLOWLABEL: | ||||
OPTSET(IN6P_AUTOFLOWLABEL); | OPTSET(IN6P_AUTOFLOWLABEL); | ||||
break; | break; | ||||
case IPV6_ORIGDSTADDR: | |||||
OPTSET2(INP_ORIGDSTADDR, optval); | |||||
break; | |||||
case IPV6_BINDANY: | case IPV6_BINDANY: | ||||
OPTSET(INP_BINDANY); | OPTSET(INP_BINDANY); | ||||
break; | break; | ||||
case IPV6_BINDMULTI: | case IPV6_BINDMULTI: | ||||
OPTSET2(INP_BINDMULTI, optval); | OPTSET2(INP_BINDMULTI, optval); | ||||
break; | break; | ||||
#ifdef RSS | #ifdef RSS | ||||
▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | #endif | ||||
} | } | ||||
/* | /* | ||||
* We only ensure valsize is not too large | * We only ensure valsize is not too large | ||||
* here. Further validation will be done | * here. Further validation will be done | ||||
* later. | * later. | ||||
*/ | */ | ||||
error = sooptcopyin(sopt, optbuf_storage, | error = sooptcopyin(sopt, optbuf_storage, | ||||
sizeof(optbuf_storage), 0); | sizeof(optbuf_storage), 0); | ||||
adrian: This should be using OPTBIT or OPTBIT2 as appropriate. | |||||
if (error) | if (error) | ||||
break; | break; | ||||
optlen = sopt->sopt_valsize; | optlen = sopt->sopt_valsize; | ||||
optbuf = optbuf_storage; | optbuf = optbuf_storage; | ||||
optp = &in6p->in6p_outputopts; | optp = &in6p->in6p_outputopts; | ||||
error = ip6_pcbopt(optname, optbuf, optlen, | error = ip6_pcbopt(optname, optbuf, optlen, | ||||
optp, (td != NULL) ? td->td_ucred : NULL, | optp, (td != NULL) ? td->td_ucred : NULL, | ||||
uproto); | uproto); | ||||
▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | #endif | ||||
break; | break; | ||||
} | } | ||||
case IPV6_RECVTCLASS: | case IPV6_RECVTCLASS: | ||||
optval = OPTBIT(IN6P_TCLASS); | optval = OPTBIT(IN6P_TCLASS); | ||||
break; | break; | ||||
case IPV6_AUTOFLOWLABEL: | case IPV6_AUTOFLOWLABEL: | ||||
optval = OPTBIT(IN6P_AUTOFLOWLABEL); | optval = OPTBIT(IN6P_AUTOFLOWLABEL); | ||||
break; | |||||
case IPV6_ORIGDSTADDR: | |||||
optval = OPTBIT2(INP_ORIGDSTADDR); | |||||
break; | break; | ||||
case IPV6_BINDANY: | case IPV6_BINDANY: | ||||
optval = OPTBIT(INP_BINDANY); | optval = OPTBIT(INP_BINDANY); | ||||
break; | break; | ||||
case IPV6_FLOWID: | case IPV6_FLOWID: | ||||
optval = in6p->inp_flowid; | optval = in6p->inp_flowid; | ||||
▲ Show 20 Lines • Show All 1,072 Lines • Show Last 20 Lines |
This should be using OPTBIT or OPTBIT2 as appropriate.