mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 21:05:08 +00:00
sockbuf: merge two versions of sbcreatecontrol() into one
No functional change.
This commit is contained in:
parent
eac7f0798b
commit
b46667c63e
|
@ -1035,7 +1035,7 @@ do_rx_tls_cmp(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
|
|||
|
||||
/* Allocate the control message mbuf. */
|
||||
control = sbcreatecontrol(NULL, sizeof(*tgr), TLS_GET_RECORD,
|
||||
IPPROTO_TCP);
|
||||
IPPROTO_TCP, M_NOWAIT);
|
||||
if (control == NULL) {
|
||||
m_freem(m);
|
||||
m_freem(tls_data);
|
||||
|
|
|
@ -2119,7 +2119,7 @@ ktls_decrypt(struct socket *so)
|
|||
tgr.tls_vminor = hdr->tls_vminor;
|
||||
tgr.tls_length = htobe16(tls_len - tls->params.tls_hlen -
|
||||
trail_len);
|
||||
control = sbcreatecontrol_how(&tgr, sizeof(tgr),
|
||||
control = sbcreatecontrol(&tgr, sizeof(tgr),
|
||||
TLS_GET_RECORD, IPPROTO_TCP, M_WAITOK);
|
||||
|
||||
SOCKBUF_LOCK(sb);
|
||||
|
|
|
@ -1760,7 +1760,7 @@ sbdroprecord(struct sockbuf *sb)
|
|||
* type for presentation on a socket buffer.
|
||||
*/
|
||||
struct mbuf *
|
||||
sbcreatecontrol_how(void *p, int size, int type, int level, int wait)
|
||||
sbcreatecontrol(void *p, int size, int type, int level, int wait)
|
||||
{
|
||||
struct cmsghdr *cp;
|
||||
struct mbuf *m;
|
||||
|
@ -1792,13 +1792,6 @@ sbcreatecontrol_how(void *p, int size, int type, int level, int wait)
|
|||
return (m);
|
||||
}
|
||||
|
||||
struct mbuf *
|
||||
sbcreatecontrol(caddr_t p, int size, int type, int level)
|
||||
{
|
||||
|
||||
return (sbcreatecontrol_how(p, size, type, level, M_NOWAIT));
|
||||
}
|
||||
|
||||
/*
|
||||
* This does the same for socket buffers that sotoxsocket does for sockets:
|
||||
* generate an user-format data structure describing the socket buffer. Note
|
||||
|
|
|
@ -2043,7 +2043,7 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags)
|
|||
*/
|
||||
newlen = newfds * sizeof(int);
|
||||
*controlp = sbcreatecontrol(NULL, newlen,
|
||||
SCM_RIGHTS, SOL_SOCKET);
|
||||
SCM_RIGHTS, SOL_SOCKET, M_NOWAIT);
|
||||
if (*controlp == NULL) {
|
||||
FILEDESC_XUNLOCK(fdesc);
|
||||
error = E2BIG;
|
||||
|
@ -2081,7 +2081,7 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags)
|
|||
if (error || controlp == NULL)
|
||||
goto next;
|
||||
*controlp = sbcreatecontrol(NULL, datalen,
|
||||
cm->cmsg_type, cm->cmsg_level);
|
||||
cm->cmsg_type, cm->cmsg_level, M_NOWAIT);
|
||||
if (*controlp == NULL) {
|
||||
error = ENOBUFS;
|
||||
goto next;
|
||||
|
@ -2222,7 +2222,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
* Fill in credential information.
|
||||
*/
|
||||
case SCM_CREDS:
|
||||
*controlp = sbcreatecontrol_how(NULL, sizeof(*cmcred),
|
||||
*controlp = sbcreatecontrol(NULL, sizeof(*cmcred),
|
||||
SCM_CREDS, SOL_SOCKET, M_WAITOK);
|
||||
cmcred = (struct cmsgcred *)
|
||||
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
|
||||
|
@ -2266,7 +2266,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
* file structure and capability rights.
|
||||
*/
|
||||
newlen = oldfds * sizeof(fdep[0]);
|
||||
*controlp = sbcreatecontrol_how(NULL, newlen,
|
||||
*controlp = sbcreatecontrol(NULL, newlen,
|
||||
SCM_RIGHTS, SOL_SOCKET, M_WAITOK);
|
||||
fdp = data;
|
||||
for (i = 0; i < oldfds; i++, fdp++) {
|
||||
|
@ -2298,7 +2298,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
break;
|
||||
|
||||
case SCM_TIMESTAMP:
|
||||
*controlp = sbcreatecontrol_how(NULL, sizeof(*tv),
|
||||
*controlp = sbcreatecontrol(NULL, sizeof(*tv),
|
||||
SCM_TIMESTAMP, SOL_SOCKET, M_WAITOK);
|
||||
tv = (struct timeval *)
|
||||
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
|
||||
|
@ -2306,7 +2306,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
break;
|
||||
|
||||
case SCM_BINTIME:
|
||||
*controlp = sbcreatecontrol_how(NULL, sizeof(*bt),
|
||||
*controlp = sbcreatecontrol(NULL, sizeof(*bt),
|
||||
SCM_BINTIME, SOL_SOCKET, M_WAITOK);
|
||||
bt = (struct bintime *)
|
||||
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
|
||||
|
@ -2314,7 +2314,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
break;
|
||||
|
||||
case SCM_REALTIME:
|
||||
*controlp = sbcreatecontrol_how(NULL, sizeof(*ts),
|
||||
*controlp = sbcreatecontrol(NULL, sizeof(*ts),
|
||||
SCM_REALTIME, SOL_SOCKET, M_WAITOK);
|
||||
ts = (struct timespec *)
|
||||
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
|
||||
|
@ -2322,7 +2322,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td)
|
|||
break;
|
||||
|
||||
case SCM_MONOTONIC:
|
||||
*controlp = sbcreatecontrol_how(NULL, sizeof(*ts),
|
||||
*controlp = sbcreatecontrol(NULL, sizeof(*ts),
|
||||
SCM_MONOTONIC, SOL_SOCKET, M_WAITOK);
|
||||
ts = (struct timespec *)
|
||||
CMSG_DATA(mtod(*controlp, struct cmsghdr *));
|
||||
|
@ -2370,7 +2370,7 @@ unp_addsockcred(struct thread *td, struct mbuf *control, int mode)
|
|||
cmsgtype = SCM_CREDS;
|
||||
}
|
||||
|
||||
m = sbcreatecontrol(NULL, ctrlsz, cmsgtype, SOL_SOCKET);
|
||||
m = sbcreatecontrol(NULL, ctrlsz, cmsgtype, SOL_SOCKET, M_NOWAIT);
|
||||
if (m == NULL)
|
||||
return (control);
|
||||
|
||||
|
|
|
@ -460,16 +460,16 @@ ng_btsocket_hci_raw_savctl(ng_btsocket_hci_raw_pcb_p pcb, struct mbuf **ctl,
|
|||
|
||||
if (pcb->flags & NG_BTSOCKET_HCI_RAW_DIRECTION) {
|
||||
dir = (m->m_flags & M_PROTO1)? 1 : 0;
|
||||
*ctl = sbcreatecontrol((caddr_t) &dir, sizeof(dir),
|
||||
SCM_HCI_RAW_DIRECTION, SOL_HCI_RAW);
|
||||
*ctl = sbcreatecontrol(&dir, sizeof(dir),
|
||||
SCM_HCI_RAW_DIRECTION, SOL_HCI_RAW, M_NOWAIT);
|
||||
if (*ctl != NULL)
|
||||
ctl = &((*ctl)->m_next);
|
||||
}
|
||||
|
||||
if (pcb->so->so_options & SO_TIMESTAMP) {
|
||||
microtime(&tv);
|
||||
*ctl = sbcreatecontrol((caddr_t) &tv, sizeof(tv),
|
||||
SCM_TIMESTAMP, SOL_SOCKET);
|
||||
*ctl = sbcreatecontrol(&tv, sizeof(tv), SCM_TIMESTAMP,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*ctl != NULL)
|
||||
ctl = &((*ctl)->m_next);
|
||||
}
|
||||
|
|
|
@ -1167,8 +1167,8 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
} else {
|
||||
bintime(&bt);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)&bt, sizeof(bt),
|
||||
SCM_BINTIME, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&bt, sizeof(bt), SCM_BINTIME,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1189,8 +1189,8 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
} else {
|
||||
microtime(&tv);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)&tv, sizeof(tv),
|
||||
SCM_TIMESTAMP, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol((caddr_t)&tv, sizeof(tv), SCM_TIMESTAMP,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1208,8 +1208,8 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
} else {
|
||||
nanotime(&ts);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)&ts, sizeof(ts),
|
||||
SCM_REALTIME, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&ts, sizeof(ts), SCM_REALTIME,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1222,8 +1222,8 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
mbuf_tstmp2timespec(m, &ts);
|
||||
else
|
||||
nanouptime(&ts);
|
||||
*mp = sbcreatecontrol((caddr_t)&ts, sizeof(ts),
|
||||
SCM_MONOTONIC, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&ts, sizeof(ts), SCM_MONOTONIC,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1237,20 +1237,20 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
sti.st_info_flags = ST_INFO_HW;
|
||||
if ((m->m_flags & M_TSTMP_HPREC) != 0)
|
||||
sti.st_info_flags |= ST_INFO_HW_HPREC;
|
||||
*mp = sbcreatecontrol((caddr_t)&sti, sizeof(sti), SCM_TIME_INFO,
|
||||
SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&sti, sizeof(sti), SCM_TIME_INFO,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
if (inp->inp_flags & INP_RECVDSTADDR) {
|
||||
*mp = sbcreatecontrol((caddr_t)&ip->ip_dst,
|
||||
sizeof(struct in_addr), IP_RECVDSTADDR, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&ip->ip_dst, sizeof(struct in_addr),
|
||||
IP_RECVDSTADDR, IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
if (inp->inp_flags & INP_RECVTTL) {
|
||||
*mp = sbcreatecontrol((caddr_t)&ip->ip_ttl,
|
||||
sizeof(u_char), IP_RECVTTL, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&ip->ip_ttl, sizeof(u_char), IP_RECVTTL,
|
||||
IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1261,15 +1261,15 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
*/
|
||||
/* options were tossed already */
|
||||
if (inp->inp_flags & INP_RECVOPTS) {
|
||||
*mp = sbcreatecontrol((caddr_t)opts_deleted_above,
|
||||
sizeof(struct in_addr), IP_RECVOPTS, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(opts_deleted_above,
|
||||
sizeof(struct in_addr), IP_RECVOPTS, IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
/* ip_srcroute doesn't do what we want here, need to fix */
|
||||
if (inp->inp_flags & INP_RECVRETOPTS) {
|
||||
*mp = sbcreatecontrol((caddr_t)ip_srcroute(m),
|
||||
sizeof(struct in_addr), IP_RECVRETOPTS, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(ip_srcroute(m), sizeof(struct in_addr),
|
||||
IP_RECVRETOPTS, IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1301,14 +1301,14 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
sdl2->sdl_index = 0;
|
||||
sdl2->sdl_nlen = sdl2->sdl_alen = sdl2->sdl_slen = 0;
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)sdl2, sdl2->sdl_len,
|
||||
IP_RECVIF, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(sdl2, sdl2->sdl_len, IP_RECVIF,
|
||||
IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
if (inp->inp_flags & INP_RECVTOS) {
|
||||
*mp = sbcreatecontrol((caddr_t)&ip->ip_tos,
|
||||
sizeof(u_char), IP_RECVTOS, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&ip->ip_tos, sizeof(u_char), IP_RECVTOS,
|
||||
IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1323,12 +1323,12 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
* XXX should handle the failure of one or the
|
||||
* other - don't populate both?
|
||||
*/
|
||||
*mp = sbcreatecontrol((caddr_t) &flowid,
|
||||
sizeof(uint32_t), IP_FLOWID, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&flowid, sizeof(uint32_t), IP_FLOWID,
|
||||
IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
*mp = sbcreatecontrol((caddr_t) &flow_type,
|
||||
sizeof(uint32_t), IP_FLOWTYPE, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&flow_type, sizeof(uint32_t),
|
||||
IP_FLOWTYPE, IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1342,8 +1342,8 @@ ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,
|
|||
flow_type = M_HASHTYPE_GET(m);
|
||||
|
||||
if (rss_hash2bucket(flowid, flow_type, &rss_bucketid) == 0) {
|
||||
*mp = sbcreatecontrol((caddr_t) &rss_bucketid,
|
||||
sizeof(uint32_t), IP_RSSBUCKETID, IPPROTO_IP);
|
||||
*mp = sbcreatecontrol(&rss_bucketid, sizeof(uint32_t),
|
||||
IP_RSSBUCKETID, IPPROTO_IP, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
|
|
@ -327,8 +327,9 @@ udp_append(struct inpcb *inp, struct ip *ip, struct mbuf *n, int off,
|
|||
ip_savecontrol(inp, &opts, ip, n);
|
||||
}
|
||||
if ((inp->inp_vflag & INP_IPV4) && (inp->inp_flags2 & INP_ORIGDSTADDR)) {
|
||||
tmpopts = sbcreatecontrol((caddr_t)&udp_in[1],
|
||||
sizeof(struct sockaddr_in), IP_ORIGDSTADDR, IPPROTO_IP);
|
||||
tmpopts = sbcreatecontrol(&udp_in[1],
|
||||
sizeof(struct sockaddr_in), IP_ORIGDSTADDR, IPPROTO_IP,
|
||||
M_NOWAIT);
|
||||
if (tmpopts) {
|
||||
if (opts) {
|
||||
tmpopts->m_next = opts;
|
||||
|
|
|
@ -1216,8 +1216,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
} else {
|
||||
microtime(&t.tv);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t) &t.tv, sizeof(t.tv),
|
||||
SCM_TIMESTAMP, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&t.tv, sizeof(t.tv),
|
||||
SCM_TIMESTAMP, SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1234,8 +1234,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
} else {
|
||||
bintime(&t.bt);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)&t.bt, sizeof(t.bt),
|
||||
SCM_BINTIME, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&t.bt, sizeof(t.bt), SCM_BINTIME,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1252,8 +1252,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
} else {
|
||||
nanotime(&t.ts);
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t)&t.ts, sizeof(t.ts),
|
||||
SCM_REALTIME, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&t.ts, sizeof(t.ts),
|
||||
SCM_REALTIME, SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1266,8 +1266,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
mbuf_tstmp2timespec(m, &t.ts);
|
||||
else
|
||||
nanouptime(&t.ts);
|
||||
*mp = sbcreatecontrol((caddr_t)&t.ts, sizeof(t.ts),
|
||||
SCM_MONOTONIC, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&t.ts, sizeof(t.ts),
|
||||
SCM_MONOTONIC, SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL) {
|
||||
mp = &(*mp)->m_next;
|
||||
stamped = true;
|
||||
|
@ -1285,8 +1285,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
sti.st_info_flags = ST_INFO_HW;
|
||||
if ((m->m_flags & M_TSTMP_HPREC) != 0)
|
||||
sti.st_info_flags |= ST_INFO_HW_HPREC;
|
||||
*mp = sbcreatecontrol((caddr_t)&sti, sizeof(sti),
|
||||
SCM_TIME_INFO, SOL_SOCKET);
|
||||
*mp = sbcreatecontrol(&sti, sizeof(sti), SCM_TIME_INFO,
|
||||
SOL_SOCKET, M_NOWAIT);
|
||||
if (*mp != NULL)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1318,9 +1318,9 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
pi6.ipi6_ifindex =
|
||||
(m && m->m_pkthdr.rcvif) ? m->m_pkthdr.rcvif->if_index : 0;
|
||||
|
||||
*mp = sbcreatecontrol((caddr_t) &pi6,
|
||||
sizeof(struct in6_pktinfo),
|
||||
IS2292(inp, IPV6_2292PKTINFO, IPV6_PKTINFO), IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(&pi6, sizeof(struct in6_pktinfo),
|
||||
IS2292(inp, IPV6_2292PKTINFO, IPV6_PKTINFO), IPPROTO_IPV6,
|
||||
M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1341,9 +1341,9 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
} else {
|
||||
hlim = ip6->ip6_hlim & 0xff;
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t) &hlim, sizeof(int),
|
||||
*mp = sbcreatecontrol(&hlim, sizeof(int),
|
||||
IS2292(inp, IPV6_2292HOPLIMIT, IPV6_HOPLIMIT),
|
||||
IPPROTO_IPV6);
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1368,8 +1368,8 @@ ip6_savecontrol_v4(struct inpcb *inp, struct mbuf *m, struct mbuf **mp,
|
|||
flowinfo >>= 20;
|
||||
tclass = flowinfo & 0xff;
|
||||
}
|
||||
*mp = sbcreatecontrol((caddr_t) &tclass, sizeof(int),
|
||||
IPV6_TCLASS, IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(&tclass, sizeof(int), IPV6_TCLASS,
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1425,9 +1425,9 @@ ip6_savecontrol(struct inpcb *inp, struct mbuf *m, struct mbuf **mp)
|
|||
* RFC2292.
|
||||
* Note: this constraint is removed in RFC3542
|
||||
*/
|
||||
*mp = sbcreatecontrol((caddr_t)hbh, hbhlen,
|
||||
*mp = sbcreatecontrol(hbh, hbhlen,
|
||||
IS2292(inp, IPV6_2292HOPOPTS, IPV6_HOPOPTS),
|
||||
IPPROTO_IPV6);
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1476,10 +1476,9 @@ ip6_savecontrol(struct inpcb *inp, struct mbuf *m, struct mbuf **mp)
|
|||
if (!(inp->inp_flags & IN6P_DSTOPTS))
|
||||
break;
|
||||
|
||||
*mp = sbcreatecontrol((caddr_t)ip6e, elen,
|
||||
IS2292(inp,
|
||||
IPV6_2292DSTOPTS, IPV6_DSTOPTS),
|
||||
IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(ip6e, elen,
|
||||
IS2292(inp, IPV6_2292DSTOPTS, IPV6_DSTOPTS),
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
break;
|
||||
|
@ -1487,9 +1486,9 @@ ip6_savecontrol(struct inpcb *inp, struct mbuf *m, struct mbuf **mp)
|
|||
if (!(inp->inp_flags & IN6P_RTHDR))
|
||||
break;
|
||||
|
||||
*mp = sbcreatecontrol((caddr_t)ip6e, elen,
|
||||
*mp = sbcreatecontrol(ip6e, elen,
|
||||
IS2292(inp, IPV6_2292RTHDR, IPV6_RTHDR),
|
||||
IPPROTO_IPV6);
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
break;
|
||||
|
@ -1526,12 +1525,12 @@ ip6_savecontrol(struct inpcb *inp, struct mbuf *m, struct mbuf **mp)
|
|||
* XXX should handle the failure of one or the
|
||||
* other - don't populate both?
|
||||
*/
|
||||
*mp = sbcreatecontrol((caddr_t) &flowid,
|
||||
sizeof(uint32_t), IPV6_FLOWID, IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(&flowid, sizeof(uint32_t), IPV6_FLOWID,
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
*mp = sbcreatecontrol((caddr_t) &flow_type,
|
||||
sizeof(uint32_t), IPV6_FLOWTYPE, IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(&flow_type, sizeof(uint32_t),
|
||||
IPV6_FLOWTYPE, IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1545,8 +1544,8 @@ ip6_savecontrol(struct inpcb *inp, struct mbuf *m, struct mbuf **mp)
|
|||
flow_type = M_HASHTYPE_GET(m);
|
||||
|
||||
if (rss_hash2bucket(flowid, flow_type, &rss_bucketid) == 0) {
|
||||
*mp = sbcreatecontrol((caddr_t) &rss_bucketid,
|
||||
sizeof(uint32_t), IPV6_RSSBUCKETID, IPPROTO_IPV6);
|
||||
*mp = sbcreatecontrol(&rss_bucketid, sizeof(uint32_t),
|
||||
IPV6_RSSBUCKETID, IPPROTO_IPV6, M_NOWAIT);
|
||||
if (*mp)
|
||||
mp = &(*mp)->m_next;
|
||||
}
|
||||
|
@ -1583,8 +1582,8 @@ ip6_notify_pmtu(struct inpcb *inp, struct sockaddr_in6 *dst, u_int32_t mtu)
|
|||
if (sa6_recoverscope(&mtuctl.ip6m_addr))
|
||||
return;
|
||||
|
||||
if ((m_mtu = sbcreatecontrol((caddr_t)&mtuctl, sizeof(mtuctl),
|
||||
IPV6_PATHMTU, IPPROTO_IPV6)) == NULL)
|
||||
if ((m_mtu = sbcreatecontrol(&mtuctl, sizeof(mtuctl), IPV6_PATHMTU,
|
||||
IPPROTO_IPV6, M_NOWAIT)) == NULL)
|
||||
return;
|
||||
|
||||
so = inp->inp_socket;
|
||||
|
|
|
@ -183,8 +183,9 @@ udp6_append(struct inpcb *inp, struct mbuf *n, int off,
|
|||
inp->inp_socket->so_options & SO_TIMESTAMP)
|
||||
ip6_savecontrol(inp, n, &opts);
|
||||
if ((inp->inp_vflag & INP_IPV6) && (inp->inp_flags2 & INP_ORIGDSTADDR)) {
|
||||
tmp_opts = sbcreatecontrol((caddr_t)&fromsa[1],
|
||||
sizeof(struct sockaddr_in6), IPV6_ORIGDSTADDR, IPPROTO_IPV6);
|
||||
tmp_opts = sbcreatecontrol(&fromsa[1],
|
||||
sizeof(struct sockaddr_in6), IPV6_ORIGDSTADDR,
|
||||
IPPROTO_IPV6, M_NOWAIT);
|
||||
if (tmp_opts) {
|
||||
if (opts) {
|
||||
tmp_opts->m_next = opts;
|
||||
|
|
|
@ -158,10 +158,7 @@ void sbappendrecord(struct sockbuf *sb, struct mbuf *m0);
|
|||
void sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0);
|
||||
void sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n);
|
||||
struct mbuf *
|
||||
sbcreatecontrol(caddr_t p, int size, int type, int level);
|
||||
struct mbuf *
|
||||
sbcreatecontrol_how(void *p, int size, int type, int level,
|
||||
int wait);
|
||||
sbcreatecontrol(void *p, int size, int type, int level, int wait);
|
||||
void sbdestroy(struct socket *, sb_which);
|
||||
void sbdrop(struct sockbuf *sb, int len);
|
||||
void sbdrop_locked(struct sockbuf *sb, int len);
|
||||
|
|
Loading…
Reference in a new issue