Lines Matching refs:sq

2149 sadb_match_spi(ipsa_query_t *sq, ipsa_t *sa)
2151 return (sq->spi == sa->ipsa_spi);
2155 sadb_match_dst_v6(ipsa_query_t *sq, ipsa_t *sa)
2157 return (IPSA_ARE_ADDR_EQUAL(sa->ipsa_dstaddr, sq->dstaddr, AF_INET6));
2161 sadb_match_src_v6(ipsa_query_t *sq, ipsa_t *sa)
2163 return (IPSA_ARE_ADDR_EQUAL(sa->ipsa_srcaddr, sq->srcaddr, AF_INET6));
2167 sadb_match_dst_v4(ipsa_query_t *sq, ipsa_t *sa)
2169 return (sq->dstaddr[0] == sa->ipsa_dstaddr[0]);
2173 sadb_match_src_v4(ipsa_query_t *sq, ipsa_t *sa)
2175 return (sq->srcaddr[0] == sa->ipsa_srcaddr[0]);
2179 sadb_match_dstid(ipsa_query_t *sq, ipsa_t *sa)
2182 (sq->didtype == sa->ipsa_dst_cid->ipsid_type) &&
2183 (strcmp(sq->didstr, sa->ipsa_dst_cid->ipsid_cid) == 0));
2187 sadb_match_srcid(ipsa_query_t *sq, ipsa_t *sa)
2190 (sq->sidtype == sa->ipsa_src_cid->ipsid_type) &&
2191 (strcmp(sq->sidstr, sa->ipsa_src_cid->ipsid_cid) == 0));
2195 sadb_match_kmc(ipsa_query_t *sq, ipsa_t *sa)
2199 return (M(sq->kmc, sa->ipsa_kmc) && M(sq->kmp, sa->ipsa_kmp));
2213 ipsa_query_t *sq, int *diagnostic)
2216 ipsa_match_fn_t *mfpp = &(sq->matchers[0]);
2219 sq->matchers[i] = NULL;
2223 sq->req = req;
2224 sq->dstext = (sadb_address_t *)ksi->ks_in_extv[SADB_EXT_ADDRESS_DST];
2225 sq->srcext = (sadb_address_t *)ksi->ks_in_extv[SADB_EXT_ADDRESS_SRC];
2226 sq->assoc = (sadb_sa_t *)ksi->ks_in_extv[SADB_EXT_SA];
2228 if ((req & IPSA_Q_DST) && (sq->dstext == NULL)) {
2232 if ((req & IPSA_Q_SRC) && (sq->srcext == NULL)) {
2236 if ((req & IPSA_Q_SA) && (sq->assoc == NULL)) {
2243 sq->spi = sq->assoc->sadb_sa_spi;
2246 if (sq->dstext != NULL)
2247 sq->dst = (struct sockaddr_in *)(sq->dstext + 1);
2249 sq->dst = NULL;
2250 sq->dst6 = NULL;
2251 sq->dstaddr = NULL;
2254 if (sq->srcext != NULL)
2255 sq->src = (struct sockaddr_in *)(sq->srcext + 1);
2257 sq->src = NULL;
2258 sq->src6 = NULL;
2259 sq->srcaddr = NULL;
2262 if (sq->dst != NULL)
2263 sq->af = sq->dst->sin_family;
2264 else if (sq->src != NULL)
2265 sq->af = sq->src->sin_family;
2267 sq->af = AF_INET;
2269 if (sq->af == AF_INET6) {
2270 if ((match & IPSA_Q_DST) && (sq->dstext != NULL)) {
2272 sq->dst6 = (struct sockaddr_in6 *)sq->dst;
2273 sq->dstaddr = (uint32_t *)&(sq->dst6->sin6_addr);
2276 sq->dstaddr = ALL_ZEROES_PTR;
2279 if ((match & IPSA_Q_SRC) && (sq->srcext != NULL)) {
2280 sq->src6 = (struct sockaddr_in6 *)(sq->srcext + 1);
2281 sq->srcaddr = (uint32_t *)&sq->src6->sin6_addr;
2282 if (sq->src6->sin6_family != AF_INET6) {
2289 sq->srcaddr = ALL_ZEROES_PTR;
2292 sq->src6 = sq->dst6 = NULL;
2293 if ((match & IPSA_Q_DST) && (sq->dstext != NULL)) {
2295 sq->dstaddr = (uint32_t *)&sq->dst->sin_addr;
2298 sq->dstaddr = ALL_ZEROES_PTR;
2300 if ((match & IPSA_Q_SRC) && (sq->srcext != NULL)) {
2301 sq->srcaddr = (uint32_t *)&sq->src->sin_addr;
2302 if (sq->src->sin_family != AF_INET) {
2309 sq->srcaddr = ALL_ZEROES_PTR;
2313 sq->dstid = (sadb_ident_t *)ksi->ks_in_extv[SADB_EXT_IDENTITY_DST];
2314 if ((match & IPSA_Q_DSTID) && (sq->dstid != NULL)) {
2315 sq->didstr = (char *)(sq->dstid + 1);
2316 sq->didtype = sq->dstid->sadb_ident_type;
2320 sq->srcid = (sadb_ident_t *)ksi->ks_in_extv[SADB_EXT_IDENTITY_SRC];
2322 if ((match & IPSA_Q_SRCID) && (sq->srcid != NULL)) {
2323 sq->sidstr = (char *)(sq->srcid + 1);
2324 sq->sidtype = sq->srcid->sadb_ident_type;
2328 sq->kmcext = (sadb_x_kmc_t *)ksi->ks_in_extv[SADB_X_EXT_KM_COOKIE];
2329 sq->kmc = 0;
2330 sq->kmp = 0;
2332 if ((match & IPSA_Q_KMC) && (sq->kmcext)) {
2333 sq->kmc = sq->kmcext->sadb_x_kmc_cookie;
2334 sq->kmp = sq->kmcext->sadb_x_kmc_proto;
2339 if (sq->af == AF_INET6)
2340 sq->sp = &sq->spp->s_v6;
2342 sq->sp = &sq->spp->s_v4;
2344 sq->sp = NULL;
2348 sq->inhash = INBOUND_HASH(sq->sp, sq->assoc->sadb_sa_spi);
2349 sq->inbound = &sq->sp->sdb_if[sq->inhash];
2351 sq->inhash = 0;
2352 sq->inbound = NULL;
2356 if (sq->af == AF_INET6) {
2357 sq->outhash = OUTBOUND_HASH_V6(sq->sp, *(sq->dstaddr));
2359 sq->outhash = OUTBOUND_HASH_V4(sq->sp, *(sq->dstaddr));
2361 sq->outbound = &sq->sp->sdb_of[sq->outhash];
2363 sq->outhash = 0;
2364 sq->outbound = NULL;
2366 sq->match = match;
2376 sadb_match_query(ipsa_query_t *sq, ipsa_t *sa)
2378 ipsa_match_fn_t *mfpp = &(sq->matchers[0]);
2382 if (!mfp(sq, sa))
2396 ipsa_query_t sq;
2411 !sadb_match_query(&ps->sq, entry)) {
2434 &ps.sq, diagnostic);
2464 ipsa_query_t *sq = &ps->sq;
2471 ((sq->srcaddr != NULL) &&
2472 !IPSA_ARE_ADDR_EQUAL(entry->ipsa_srcaddr, sq->srcaddr, sq->af))) {
2486 inbound_bucket = INBOUND_BUCKET(sq->sp, entry->ipsa_spi);
2492 inbound_bucket = INBOUND_BUCKET(sq->sp, entry->ipsa_otherspi);
2517 ps.sq.spp = spp; /* XXX param */
2521 &ps.sq, diagnostic);
2527 sadb_walker(ps.sq.sp->sdb_of, ps.sq.sp->sdb_hashsize,
2543 ipsa_query_t sq;
2551 sq.spp = spp; /* XXX param */
2554 &sq, diagnostic);
2558 error = get_ipsa_pair(&sq, &ipsapp, diagnostic);
2666 get_ipsa_pair(ipsa_query_t *sq, ipsap_t *ipsapp, int *diagnostic)
2677 mutex_enter(&sq->outbound->isaf_lock);
2678 mutex_enter(&sq->inbound->isaf_lock);
2680 if (sq->assoc->sadb_sa_flags & IPSA_F_INBOUND) {
2681 ipsapp->ipsap_sa_ptr = ipsec_getassocbyspi(sq->inbound,
2682 sq->assoc->sadb_sa_spi, sq->srcaddr, sq->dstaddr, sq->af);
2684 ipsapp->ipsap_bucket = sq->inbound;
2685 ipsapp->ipsap_pbucket = sq->outbound;
2688 ipsapp->ipsap_sa_ptr = ipsec_getassocbyspi(sq->outbound,
2689 sq->assoc->sadb_sa_spi, sq->srcaddr, sq->dstaddr,
2690 sq->af);
2691 ipsapp->ipsap_bucket = sq->outbound;
2692 ipsapp->ipsap_pbucket = sq->inbound;
2697 ipsec_getassocbyspi(sq->outbound,
2698 sq->assoc->sadb_sa_spi, sq->srcaddr, sq->dstaddr, sq->af);
2700 ipsapp->ipsap_bucket = sq->outbound;
2701 ipsapp->ipsap_pbucket = sq->inbound;
2703 ipsapp->ipsap_sa_ptr = ipsec_getassocbyspi(sq->inbound,
2704 sq->assoc->sadb_sa_spi, sq->srcaddr, sq->dstaddr,
2705 sq->af);
2706 ipsapp->ipsap_bucket = sq->inbound;
2707 ipsapp->ipsap_pbucket = sq->outbound;
2714 mutex_exit(&sq->outbound->isaf_lock);
2715 mutex_exit(&sq->inbound->isaf_lock);
2722 mutex_exit(&sq->outbound->isaf_lock);
2723 mutex_exit(&sq->inbound->isaf_lock);
2735 sq->assoc->sadb_sa_spi, sq->srcaddr, sq->dstaddr, sq->af);
2737 mutex_exit(&sq->outbound->isaf_lock);
2738 mutex_exit(&sq->inbound->isaf_lock);
2743 ipsapp->ipsap_sa_ptr->ipsa_srcaddr, sq->af);
2745 ipsapp->ipsap_sa_ptr->ipsa_dstaddr, sq->af);
2747 mutex_exit(&sq->inbound->isaf_lock);
2748 mutex_exit(&sq->outbound->isaf_lock);
2760 if (sq->af == AF_INET6) {
2761 ipsapp->ipsap_pbucket = OUTBOUND_BUCKET_V6(sq->sp,
2764 ipsapp->ipsap_pbucket = OUTBOUND_BUCKET_V4(sq->sp,
2768 ipsapp->ipsap_pbucket = INBOUND_BUCKET(sq->sp, pair_spi);
2772 pair_spi, pair_dstaddr, pair_srcaddr, sq->af);
3634 ipsa_query_t sq;
3636 sq.spp = spp; /* XXX param */
3638 IPSA_Q_SA|IPSA_Q_INBOUND|IPSA_Q_OUTBOUND, &sq, diagnostic);
3642 error = get_ipsa_pair(&sq, &ipsapp, diagnostic);
3652 error = update_pairing(&ipsapp, &sq, ksi, diagnostic);
4436 sadb_check_kmc(ipsa_query_t *sq, ipsa_t *sa, int *diagnostic)
4438 uint32_t kmp = sq->kmp;
4439 uint32_t kmc = sq->kmc;
4464 sadb_update_kmc(ipsa_query_t *sq, ipsa_t *sa)
4466 uint32_t kmp = sq->kmp;
4467 uint32_t kmc = sq->kmc;
4499 ipsa_query_t sq;
4502 sq.spp = spp; /* XXX param */
4505 &sq, diagnostic);
4510 error = get_ipsa_pair(&sq, &ipsapp, diagnostic);
4540 if (sq.assoc->sadb_sa_state == SADB_X_SASTATE_ACTIVE_ELSEWHERE) {
4544 sq.assoc->sadb_sa_state, NULL)) != 0) {
4552 sq.assoc->sadb_sa_state, NULL)) != 0) {
4558 if (sq.assoc->sadb_sa_state == SADB_X_SASTATE_ACTIVE) {
4561 sq.assoc->sadb_sa_state,
4571 sq.assoc->sadb_sa_state,
4591 if (!((sq.assoc->sadb_sa_state == SADB_SASTATE_MATURE) ||
4592 (sq.assoc->sadb_sa_state == SADB_X_SASTATE_ACTIVE_ELSEWHERE))) {
4597 if (sq.assoc->sadb_sa_flags & ~spp->s_updateflags) {
4616 error = sadb_check_kmc(&sq, ipsapp.ipsap_sa_ptr, diagnostic);
4620 error = sadb_check_kmc(&sq, ipsapp.ipsap_psa_ptr, diagnostic);
4643 sadb_update_kmc(&sq, ipsapp.ipsap_sa_ptr);
4679 sadb_update_kmc(&sq, ipsapp.ipsap_psa_ptr);
4688 error = update_pairing(&ipsapp, &sq, ksi, diagnostic);
4702 update_pairing(ipsap_t *ipsapp, ipsa_query_t *sq, keysock_in_t *ksi,
4739 error = get_ipsa_pair(sq, &oipsapp, diagnostic);