Lines Matching defs:sah

867 	struct secashead *sah;
877 LIST_FOREACH(sah, &sahtree, chain) {
879 if (sah->state == SADB_SASTATE_DEAD)
881 if (key_cmpsaidx(&sah->saidx, saidx, CMP_MODE | CMP_REQID))
911 sav = key_do_allocsa_policy(sah, state, dstport);
930 struct secashead *sah,
943 for (sav = LIST_FIRST(&sah->savtree[state]);
952 if (sah->saidx.mode == IPSEC_MODE_TUNNEL && dstport &&
957 if (sah->saidx.mode == IPSEC_MODE_TRANSPORT &&
962 if ((sah->saidx.mode == IPSEC_MODE_TUNNEL &&
964 (sah->saidx.mode == IPSEC_MODE_TRANSPORT &&
1021 d->sah->saidx.proto, 0, 0, d->refcnt - 1);
1028 (struct sockaddr *)&d->sah->saidx.src,
1029 d->sah->saidx.src.ss_len << 3,
1037 (struct sockaddr *)&d->sah->saidx.src,
1038 d->sah->saidx.src.ss_len << 3,
1076 else if (sah->saidx.mode == IPSEC_MODE_TUNNEL && dstport)
1158 if (proto != sav->sah->saidx.proto)
1160 if (family != sav->sah->saidx.src.ss_family ||
1161 family != sav->sah->saidx.dst.ss_family)
1184 (struct sockaddr *)&sav->sah->saidx.src, 0) != 0)
1200 (struct sockaddr *)&sav->sah->saidx.src, 0) != 0)
1220 (struct sockaddr *)&sav->sah->saidx.dst, 0) != 0)
1237 (struct sockaddr *)&sav->sah->saidx.dst, 0) != 0)
1271 struct secashead *sah;
1277 saidx.mode = outsav->sah->saidx.mode;
1279 saidx.proto = outsav->sah->saidx.proto;
1280 bcopy(&outsav->sah->saidx.src, &saidx.dst, sizeof(struct sockaddr_in));
1281 bcopy(&outsav->sah->saidx.dst, &saidx.src, sizeof(struct sockaddr_in));
1284 LIST_FOREACH(sah, &sahtree, chain) {
1285 if (sah->state == SADB_SASTATE_DEAD)
1287 if (key_cmpsaidx(&sah->saidx, &saidx, CMP_MODE))
1295 * Found sah - now go thru list of SAs and find
1313 if (key_do_get_translated_port(sah, outsav, state)) {
1324 struct secashead *sah,
1336 for (currsav = LIST_FIRST(&sah->savtree[state]);
3103 struct secashead *sah)
3112 if (sah == NULL)
3121 for (sav = (struct secasvar *)LIST_FIRST(&sah->savtree[state]);
3139 sav->sah = NULL;
3144 /* don't delete sah only if there are savs. */
3148 if (sah->sa_route.ro_rt) {
3149 rtfree(sah->sa_route.ro_rt);
3150 sah->sa_route.ro_rt = (struct rtentry *)NULL;
3154 if (__LIST_CHAINED(sah))
3155 LIST_REMOVE(sah, chain);
3157 KFREE(sah);
3178 struct secashead *sah,
3187 if (m == NULL || mhp == NULL || mhp->msg == NULL || sah == NULL)
3256 newsav->sah = sah;
3259 LIST_INSERT_TAIL(&sah->savtree[SADB_SASTATE_LARVAL], newsav,
3277 key_newsav2(struct secashead *sah,
3299 if (sah == NULL)
3355 newsav->sah = sah;
3359 LIST_INSERT_TAIL(&sah->savtree[SADB_SASTATE_MATURE], newsav,
3363 LIST_INSERT_TAIL(&sah->savtree[SADB_SASTATE_LARVAL], newsav,
3447 struct secashead *sah;
3451 LIST_FOREACH(sah, &sahtree, chain) {
3452 if (sah->state == SADB_SASTATE_DEAD)
3454 if (key_cmpsaidx(&sah->saidx, saidx, CMP_REQID))
3455 return sah;
3465 struct secashead *sah;
3469 sah = key_getsah(saidx);
3470 if (!sah) {
3473 return sah;
3508 key_ismyaddr((struct sockaddr *)&sav->sah->saidx.dst))
3537 struct secashead *sah,
3549 if (sav->sah != sah)
4123 switch (sav->sah->saidx.proto) {
4138 switch (sav->sah->saidx.proto) {
4326 m = key_setsadbxsa2(sav->sah->saidx.mode,
4328 sav->sah->saidx.reqid);
4335 (struct sockaddr *)&sav->sah->saidx.src,
4343 (struct sockaddr *)&sav->sah->saidx.dst,
5250 struct secashead *sah, *nextsah;
5253 for (sah = LIST_FIRST(&sahtree);
5254 sah != NULL;
5255 sah = nextsah) {
5258 nextsah = LIST_NEXT(sah, chain);
5260 /* if sah has been dead, then delete it and process next sah. */
5261 if (sah->state == SADB_SASTATE_DEAD) {
5262 key_delsah(sah);
5267 if (LIST_FIRST(&sah->savtree[SADB_SASTATE_LARVAL]) == NULL &&
5268 LIST_FIRST(&sah->savtree[SADB_SASTATE_MATURE]) == NULL &&
5269 LIST_FIRST(&sah->savtree[SADB_SASTATE_DYING]) == NULL &&
5270 LIST_FIRST(&sah->savtree[SADB_SASTATE_DEAD]) == NULL) {
5271 key_delsah(sah);
5277 for (sav = LIST_FIRST(&sah->savtree[SADB_SASTATE_LARVAL]);
5301 sav = LIST_FIRST(&sah->savtree[SADB_SASTATE_MATURE]); //%%% should we check dying list if this is empty???
5314 for (sav = LIST_FIRST(&sah->savtree[SADB_SASTATE_MATURE]);
5377 for (sav = LIST_FIRST(&sah->savtree[SADB_SASTATE_DYING]);
5432 for (sav = LIST_FIRST(&sah->savtree[SADB_SASTATE_DEAD]);
6072 struct secashead *sah;
6132 if ((sah = key_getsah(&saidx)) == NULL) {
6140 error = key_setident(sah, m, mhp);
6149 && (sav = key_getsavbyseq(sah, mhp->msg->sadb_msg_seq)) == NULL) {
6157 if ((sav = key_getsavbyspi(sah, sa0->sadb_sa_spi)) == NULL) {
6167 if (sav->sah->saidx.proto != proto) {
6171 sav->sah->saidx.proto, proto));
6205 (sav->sah->saidx.mode != IPSEC_MODE_TRANSPORT ||
6206 sav->sah->saidx.src.ss_family != AF_INET))
6243 struct secashead *sah,
6254 LIST_FOREACH(sav, &sah->savtree[state], chain) {
6427 struct secashead *sah,
6437 if (sah == NULL || m == NULL || mhp == NULL || mhp->msg == NULL)
6443 sah->idents = NULL;
6444 sah->identd = NULL;
6473 sah->idents = NULL;
6474 sah->identd = NULL;
6479 KMALLOC_NOWAIT(sah->idents, struct sadb_ident *, idsrclen);
6480 if (sah->idents == NULL) {
6482 KMALLOC_WAIT(sah->idents, struct sadb_ident *, idsrclen);
6484 if (sah->idents == NULL) {
6489 KMALLOC_NOWAIT(sah->identd, struct sadb_ident *, iddstlen);
6490 if (sah->identd == NULL) {
6492 KMALLOC_WAIT(sah->identd, struct sadb_ident *, iddstlen);
6494 if (sah->identd == NULL) {
6495 KFREE(sah->idents);
6496 sah->idents = NULL;
6501 bcopy(idsrc, sah->idents, idsrclen);
6502 bcopy(iddst, sah->identd, iddstlen);
6567 struct secashead *sah;
6620 LIST_FOREACH(sah, &sahtree, chain) {
6621 if (sah->state == SADB_SASTATE_DEAD)
6623 if (key_cmpsaidx(&sah->saidx, &saidx, CMP_HEAD) == 0)
6627 sav = key_getsavbyspi(sah, sa0->sadb_sa_spi);
6631 if (sah == NULL) {
6680 struct secashead *sah;
6692 LIST_FOREACH(sah, &sahtree, chain) {
6693 if (sah->state == SADB_SASTATE_DEAD)
6695 if (key_cmpsaidx(&sah->saidx, &saidx, CMP_HEAD) == 0)
6705 for (sav = LIST_FIRST(&sah->savtree[state]);
6770 struct secashead *sah;
6809 LIST_FOREACH(sah, &sahtree, chain) {
6810 if (sah->state == SADB_SASTATE_DEAD)
6812 if (key_cmpsaidx(&sah->saidx, &saidx, CMP_HEAD) == 0)
6816 sav = key_getsavbyspi(sah, sa0->sadb_sa_spi);
6820 if (sah == NULL) {
6831 if ((satype = key_proto2satype(sah->saidx.proto)) == 0) {
6861 struct secashead *sah;
6871 LIST_FOREACH(sah, &sahtree, chain) {
6872 if (sah->state == SADB_SASTATE_DEAD)
6876 sav = key_getsavbyspi(sah, spi);
7516 struct secashead *sah;
7602 LIST_FOREACH(sah, &sahtree, chain) {
7603 if (sah->state == SADB_SASTATE_DEAD)
7605 if (key_cmpsaidx(&sah->saidx, &saidx, CMP_MODE | CMP_REQID))
7608 if (sah != NULL) {
7864 if (sav->sah == NULL)
7866 if ((satype = key_proto2satype(sav->sah->saidx.proto)) == 0)
7886 m = key_setsadbxsa2(sav->sah->saidx.mode,
7888 sav->sah->saidx.reqid);
7918 (struct sockaddr *)&sav->sah->saidx.src,
7928 (struct sockaddr *)&sav->sah->saidx.dst,
7983 struct secashead *sah, *nextsah;
8002 for (sah = LIST_FIRST(&sahtree);
8003 sah != NULL;
8004 sah = nextsah) {
8005 nextsah = LIST_NEXT(sah, chain);
8008 && proto != sah->saidx.proto)
8015 for (sav = LIST_FIRST(&sah->savtree[state]);
8026 sah->state = SADB_SASTATE_DEAD;
8071 struct secashead *sah;
8109 LIST_FOREACH(sah, &sahtree, chain) {
8111 && proto != sah->saidx.proto)
8115 if ((satype = key_proto2satype(sah->saidx.proto)) == 0) {
8126 LIST_FOREACH(sav, &sah->savtree[state], chain) {
8744 if (sav->sah == NULL)
8745 panic("sav->sah == NULL at key_checktunnelsanity");
8810 struct secashead *sah;
8814 LIST_FOREACH(sah, &sahtree, chain) {
8815 ro = &sah->sa_route;
8845 LIST_INSERT_HEAD(&sav->sah->savtree[state], sav, chain);
9084 memcpy(&saidx_swap_sent_addr.src, &sav_sent->sah->saidx.dst, sizeof(saidx_swap_sent_addr.src));
9085 memcpy(&saidx_swap_sent_addr.dst, &sav_sent->sah->saidx.src, sizeof(saidx_swap_sent_addr.dst));
9086 saidx_swap_sent_addr.proto = sav_sent->sah->saidx.proto;
9087 saidx_swap_sent_addr.mode = sav_sent->sah->saidx.mode;
9090 if (key_cmpsaidx(&sav_sent->sah->saidx, &sav_update->sah->saidx, CMP_MODE | CMP_PORT) ||
9091 key_cmpsaidx(&saidx_swap_sent_addr, &sav_update->sah->saidx, CMP_MODE | CMP_PORT)) {