Index: head/sys/kern/uipc_sockbuf.c =================================================================== --- head/sys/kern/uipc_sockbuf.c +++ head/sys/kern/uipc_sockbuf.c @@ -1101,11 +1101,11 @@ void sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0, - struct mbuf *control) + struct mbuf *control, int flags) { struct mbuf *m, *mlast; - m_clrprotoflags(m0); + sbm_clrprotoflags(m0, flags); m_last(control)->m_next = m0; SBLASTRECORDCHK(sb); @@ -1123,11 +1123,12 @@ } void -sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, struct mbuf *control) +sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, struct mbuf *control, + int flags) { SOCKBUF_LOCK(sb); - sbappendcontrol_locked(sb, m0, control); + sbappendcontrol_locked(sb, m0, control, flags); SOCKBUF_UNLOCK(sb); } Index: head/sys/kern/uipc_usrreq.c =================================================================== --- head/sys/kern/uipc_usrreq.c +++ head/sys/kern/uipc_usrreq.c @@ -1192,7 +1192,7 @@ case SOCK_STREAM: if (control != NULL) { sbappendcontrol_locked(&so2->so_rcv, m, - control); + control, flags); control = NULL; } else sbappend_locked(&so2->so_rcv, m, flags); Index: head/sys/sys/sockbuf.h =================================================================== --- head/sys/sys/sockbuf.h +++ head/sys/sys/sockbuf.h @@ -145,9 +145,9 @@ int sbappendaddr_nospacecheck_locked(struct sockbuf *sb, const struct sockaddr *asa, struct mbuf *m0, struct mbuf *control); void sbappendcontrol(struct sockbuf *sb, struct mbuf *m0, - struct mbuf *control); + struct mbuf *control, int flags); void sbappendcontrol_locked(struct sockbuf *sb, struct mbuf *m0, - struct mbuf *control); + struct mbuf *control, int flags); 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);