Home | History | Annotate | Download | only in netipsec

Lines Matching defs:pcbsp

192 ipsec_checkpcbcache(struct mbuf *m, struct inpcbpolicy *pcbsp, int dir)
199 KASSERT(pcbsp != NULL);
200 KASSERT(dir < __arraycount(pcbsp->sp_cache));
201 KASSERT(inp_locked(pcbsp->sp_inp));
209 if (ipsec_spdgen != pcbsp->sp_cache[dir].cachegen) {
210 ipsec_invalpcbcache(pcbsp, dir);
213 sp = pcbsp->sp_cache[dir].cachesp;
218 ipsec_invalpcbcache(pcbsp, dir);
221 if ((pcbsp->sp_cacheflags & IPSEC_PCBSP_CONNECTED) == 0) {
233 if (memcmp(&pcbsp->sp_cache[dir].cacheidx, &spidx,
255 key_sp_refcnt(sp), pcbsp->sp_cache[dir].cachesp);
262 ipsec_fillpcbcache(struct inpcbpolicy *pcbsp, struct mbuf *m,
267 KASSERT(dir < __arraycount(pcbsp->sp_cache));
268 KASSERT(inp_locked(pcbsp->sp_inp));
270 pcbsp->sp_cache[dir].cachesp = NULL;
271 pcbsp->sp_cache[dir].cachehint = IPSEC_PCBHINT_UNKNOWN;
272 if (ipsec_setspidx(m, &pcbsp->sp_cache[dir].cacheidx, dir, 1) != 0) {
275 pcbsp->sp_cache[dir].cachesp = sp;
276 if (pcbsp->sp_cache[dir].cachesp) {
281 if (pcbsp->sp_cacheflags & IPSEC_PCBSP_CONNECTED) {
282 switch (pcbsp->sp_cache[dir].cachesp->policy) {
285 pcbsp->sp_cache[dir].cachehint =
289 pcbsp->sp_cache[dir].cachehint =
294 pcbsp->sp_cache[dir].cachegen = ipsec_spdgen;
300 ipsec_invalpcbcache(struct inpcbpolicy *pcbsp, int dir)
304 KASSERT(inp_locked(pcbsp->sp_inp));
309 pcbsp->sp_cache[i].cachesp = NULL;
310 pcbsp->sp_cache[i].cachehint = IPSEC_PCBHINT_UNKNOWN;
311 pcbsp->sp_cache[i].cachegen = 0;
312 memset(&pcbsp->sp_cache[i].cacheidx, 0,
313 sizeof(pcbsp->sp_cache[i].cacheidx));
319 ipsec_pcbconn(struct inpcbpolicy *pcbsp)
322 KASSERT(inp_locked(pcbsp->sp_inp));
324 pcbsp->sp_cacheflags |= IPSEC_PCBSP_CONNECTED;
325 ipsec_invalpcbcache(pcbsp, IPSEC_DIR_ANY);
329 ipsec_pcbdisconn(struct inpcbpolicy *pcbsp)
332 KASSERT(inp_locked(pcbsp->sp_inp));
334 pcbsp->sp_cacheflags &= ~IPSEC_PCBSP_CONNECTED;
335 ipsec_invalpcbcache(pcbsp, IPSEC_DIR_ANY);
405 struct inpcbpolicy *pcbsp = NULL;
439 pcbsp = inp->inp_sp;
448 KASSERT(pcbsp != NULL);
451 currsp = pcbsp->sp_in;
454 currsp = pcbsp->sp_out;
459 if (pcbsp->priv) { /* when privileged socket */
514 KASSERTMSG(sp != NULL, "null SP (priv %u policy %u", pcbsp->priv,
518 pcbsp->priv, currsp->policy, sp, key_sp_refcnt(sp));
519 ipsec_fillpcbcache(pcbsp, m, sp, dir);