Lines Matching refs:sa
588 int pfkey_sockaddr_extract(const struct sockaddr *sa, xfrm_address_t *xaddr) in pfkey_sockaddr_extract() argument
590 switch (sa->sa_family) { in pfkey_sockaddr_extract()
593 ((struct sockaddr_in *)sa)->sin_addr.s_addr; in pfkey_sockaddr_extract()
598 &((struct sockaddr_in6 *)sa)->sin6_addr, in pfkey_sockaddr_extract()
615 const struct sadb_sa *sa; in pfkey_xfrm_state_lookup() local
621 sa = ext_hdrs[SADB_EXT_SA - 1]; in pfkey_xfrm_state_lookup()
622 if (sa == NULL) in pfkey_xfrm_state_lookup()
651 return xfrm_state_lookup(net, DUMMY_MARK, xaddr, sa->sadb_sa_spi, proto, family); in pfkey_xfrm_state_lookup()
692 struct sockaddr *sa, in pfkey_sockaddr_fill() argument
698 struct sockaddr_in *sin = (struct sockaddr_in *)sa; in pfkey_sockaddr_fill()
708 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa; in pfkey_sockaddr_fill()
726 struct sadb_sa *sa; in __pfkey_xfrm_state2msg() local
796 sa = (struct sadb_sa *) skb_put(skb, sizeof(struct sadb_sa)); in __pfkey_xfrm_state2msg()
797 sa->sadb_sa_len = sizeof(struct sadb_sa)/sizeof(uint64_t); in __pfkey_xfrm_state2msg()
798 sa->sadb_sa_exttype = SADB_EXT_SA; in __pfkey_xfrm_state2msg()
799 sa->sadb_sa_spi = x->id.spi; in __pfkey_xfrm_state2msg()
800 sa->sadb_sa_replay = x->props.replay_window; in __pfkey_xfrm_state2msg()
803 sa->sadb_sa_state = x->km.dying ? in __pfkey_xfrm_state2msg()
807 sa->sadb_sa_state = SADB_SASTATE_LARVAL; in __pfkey_xfrm_state2msg()
810 sa->sadb_sa_state = SADB_SASTATE_DEAD; in __pfkey_xfrm_state2msg()
813 sa->sadb_sa_auth = 0; in __pfkey_xfrm_state2msg()
816 sa->sadb_sa_auth = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
819 sa->sadb_sa_encrypt = 0; in __pfkey_xfrm_state2msg()
823 sa->sadb_sa_encrypt = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
829 sa->sadb_sa_encrypt = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
833 sa->sadb_sa_flags = 0; in __pfkey_xfrm_state2msg()
835 sa->sadb_sa_flags |= SADB_SAFLAGS_NOECN; in __pfkey_xfrm_state2msg()
837 sa->sadb_sa_flags |= SADB_SAFLAGS_DECAP_DSCP; in __pfkey_xfrm_state2msg()
839 sa->sadb_sa_flags |= SADB_SAFLAGS_NOPMTUDISC; in __pfkey_xfrm_state2msg()
1035 const struct sadb_sa *sa; in pfkey_msg2xfrm_state() local
1042 sa = ext_hdrs[SADB_EXT_SA - 1]; in pfkey_msg2xfrm_state()
1043 if (!sa || in pfkey_msg2xfrm_state()
1076 if (sa->sadb_sa_auth > SADB_AALG_MAX || in pfkey_msg2xfrm_state()
1078 sa->sadb_sa_encrypt > SADB_X_CALG_MAX) || in pfkey_msg2xfrm_state()
1079 sa->sadb_sa_encrypt > SADB_EALG_MAX) in pfkey_msg2xfrm_state()
1083 sa->sadb_sa_auth != SADB_X_AALG_NULL && in pfkey_msg2xfrm_state()
1089 sa->sadb_sa_encrypt != SADB_EALG_NULL && in pfkey_msg2xfrm_state()
1099 x->id.spi = sa->sadb_sa_spi; in pfkey_msg2xfrm_state()
1100 x->props.replay_window = min_t(unsigned int, sa->sadb_sa_replay, in pfkey_msg2xfrm_state()
1102 if (sa->sadb_sa_flags & SADB_SAFLAGS_NOECN) in pfkey_msg2xfrm_state()
1104 if (sa->sadb_sa_flags & SADB_SAFLAGS_DECAP_DSCP) in pfkey_msg2xfrm_state()
1106 if (sa->sadb_sa_flags & SADB_SAFLAGS_NOPMTUDISC) in pfkey_msg2xfrm_state()
1139 if (sa->sadb_sa_auth) { in pfkey_msg2xfrm_state()
1141 struct xfrm_algo_desc *a = xfrm_aalg_get_byid(sa->sadb_sa_auth); in pfkey_msg2xfrm_state()
1158 x->props.aalgo = sa->sadb_sa_auth; in pfkey_msg2xfrm_state()
1161 if (sa->sadb_sa_encrypt) { in pfkey_msg2xfrm_state()
1163 struct xfrm_algo_desc *a = xfrm_calg_get_byid(sa->sadb_sa_encrypt); in pfkey_msg2xfrm_state()
1172 x->props.calgo = sa->sadb_sa_encrypt; in pfkey_msg2xfrm_state()
1175 struct xfrm_algo_desc *a = xfrm_ealg_get_byid(sa->sadb_sa_encrypt); in pfkey_msg2xfrm_state()
1192 x->props.ealgo = sa->sadb_sa_encrypt; in pfkey_msg2xfrm_state()
1916 u8 *sa = (u8 *) (rq + 1); in parse_ipsecrequest() local
1919 family = pfkey_sockaddr_extract((struct sockaddr *)sa, in parse_ipsecrequest()
1925 if (pfkey_sockaddr_extract((struct sockaddr *)(sa + socklen), in parse_ipsecrequest()
2130 u8 *sa = (void *)(rq + 1); in pfkey_xfrm_policy2msg() local
2132 (struct sockaddr *)sa, in pfkey_xfrm_policy2msg()
2135 (struct sockaddr *) (sa + socklen), in pfkey_xfrm_policy2msg()
2194 struct sadb_address *sa; in pfkey_spdadd() local
2219 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1]; in pfkey_spdadd()
2220 xp->family = pfkey_sadb_addr2xfrm_addr(sa, &xp->selector.saddr); in pfkey_spdadd()
2222 xp->selector.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_spdadd()
2223 xp->selector.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spdadd()
2224 xp->selector.sport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spdadd()
2228 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1]; in pfkey_spdadd()
2229 pfkey_sadb_addr2xfrm_addr(sa, &xp->selector.daddr); in pfkey_spdadd()
2230 xp->selector.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_spdadd()
2235 xp->selector.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spdadd()
2237 xp->selector.dport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spdadd()
2308 struct sadb_address *sa; in pfkey_spddelete() local
2327 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1]; in pfkey_spddelete()
2328 sel.family = pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr); in pfkey_spddelete()
2329 sel.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_spddelete()
2330 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spddelete()
2331 sel.sport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spddelete()
2335 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1]; in pfkey_spddelete()
2336 pfkey_sadb_addr2xfrm_addr(sa, &sel.daddr); in pfkey_spddelete()
2337 sel.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_spddelete()
2338 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spddelete()
2339 sel.dport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spddelete()
2417 static int parse_sockaddr_pair(struct sockaddr *sa, int ext_len, in parse_sockaddr_pair() argument
2423 if (ext_len < pfkey_sockaddr_pair_size(sa->sa_family)) in parse_sockaddr_pair()
2426 af = pfkey_sockaddr_extract(sa, saddr); in parse_sockaddr_pair()
2431 if (pfkey_sockaddr_extract((struct sockaddr *) (((u8 *)sa) + socklen), in parse_sockaddr_pair()
2493 struct sadb_address *sa; in pfkey_migrate() local
2533 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC - 1]; in pfkey_migrate()
2534 sel.family = pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr); in pfkey_migrate()
2535 sel.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_migrate()
2536 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_migrate()
2537 sel.sport = ((struct sockaddr_in *)(sa + 1))->sin_port; in pfkey_migrate()
2542 sa = ext_hdrs[SADB_EXT_ADDRESS_DST - 1]; in pfkey_migrate()
2543 pfkey_sadb_addr2xfrm_addr(sa, &sel.daddr); in pfkey_migrate()
2544 sel.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_migrate()
2545 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_migrate()
2546 sel.dport = ((struct sockaddr_in *)(sa + 1))->sin_port; in pfkey_migrate()
3280 struct sadb_sa *sa; in pfkey_send_new_mapping() local
3327 sa = (struct sadb_sa *) skb_put(skb, sizeof(struct sadb_sa)); in pfkey_send_new_mapping()
3328 sa->sadb_sa_len = sizeof(struct sadb_sa)/sizeof(uint64_t); in pfkey_send_new_mapping()
3329 sa->sadb_sa_exttype = SADB_EXT_SA; in pfkey_send_new_mapping()
3330 sa->sadb_sa_spi = x->id.spi; in pfkey_send_new_mapping()
3331 sa->sadb_sa_replay = 0; in pfkey_send_new_mapping()
3332 sa->sadb_sa_state = 0; in pfkey_send_new_mapping()
3333 sa->sadb_sa_auth = 0; in pfkey_send_new_mapping()
3334 sa->sadb_sa_encrypt = 0; in pfkey_send_new_mapping()
3335 sa->sadb_sa_flags = 0; in pfkey_send_new_mapping()
3421 u8 *sa; in set_sadb_kmaddress() local
3435 sa = (u8 *)(kma + 1); in set_sadb_kmaddress()
3436 if (!pfkey_sockaddr_fill(&k->local, 0, (struct sockaddr *)sa, family) || in set_sadb_kmaddress()
3437 !pfkey_sockaddr_fill(&k->remote, 0, (struct sockaddr *)(sa+socklen), family)) in set_sadb_kmaddress()
3449 u8 *sa; in set_ipsecrequest() local
3464 sa = (u8 *) (rq + 1); in set_ipsecrequest()
3465 if (!pfkey_sockaddr_fill(src, 0, (struct sockaddr *)sa, family) || in set_ipsecrequest()
3466 !pfkey_sockaddr_fill(dst, 0, (struct sockaddr *)(sa + socklen), family)) in set_ipsecrequest()