MCPcopy Create free account
hub / github.com/F-Stack/f-stack / key_sendup0

Function key_sendup0

freebsd/netipsec/keysock.c:141–173  ·  view source on GitHub ↗

* send message to the socket. */

Source from the content-addressed store, hash-verified

139 * send message to the socket.
140 */
141static int
142key_sendup0(struct rawcb *rp, struct mbuf *m, int promisc)
143{
144 int error;
145
146 if (promisc) {
147 struct sadb_msg *pmsg;
148
149 M_PREPEND(m, sizeof(struct sadb_msg), M_NOWAIT);
150 if (m == NULL) {
151 PFKEYSTAT_INC(in_nomem);
152 return (ENOBUFS);
153 }
154 pmsg = mtod(m, struct sadb_msg *);
155 bzero(pmsg, sizeof(*pmsg));
156 pmsg->sadb_msg_version = PF_KEY_V2;
157 pmsg->sadb_msg_type = SADB_X_PROMISC;
158 pmsg->sadb_msg_len = PFKEY_UNIT64(m->m_pkthdr.len);
159 /* pid and seq? */
160
161 PFKEYSTAT_INC(in_msgtype[pmsg->sadb_msg_type]);
162 }
163
164 if (!sbappendaddr(&rp->rcb_socket->so_rcv, (struct sockaddr *)&key_src,
165 m, NULL)) {
166 PFKEYSTAT_INC(in_nomem);
167 m_freem(m);
168 error = ENOBUFS;
169 } else
170 error = 0;
171 sorwakeup(rp->rcb_socket);
172 return error;
173}
174
175/* so can be NULL if target != KEY_SENDUP_ONE */
176int

Callers 1

key_sendup_mbufFunction · 0.85

Calls 3

bzeroFunction · 0.85
sbappendaddrFunction · 0.85
m_freemFunction · 0.50

Tested by

no test coverage detected