Lines Matching refs:sa
65 static int parse_sockaddr_pair(struct sockaddr *sa, int ext_len,
627 int pfkey_sockaddr_extract(const struct sockaddr *sa, xfrm_address_t *xaddr) in pfkey_sockaddr_extract() argument
629 switch (sa->sa_family) { in pfkey_sockaddr_extract()
632 ((struct sockaddr_in *)sa)->sin_addr.s_addr; in pfkey_sockaddr_extract()
637 &((struct sockaddr_in6 *)sa)->sin6_addr, in pfkey_sockaddr_extract()
654 const struct sadb_sa *sa; in pfkey_xfrm_state_lookup() local
660 sa = ext_hdrs[SADB_EXT_SA - 1]; in pfkey_xfrm_state_lookup()
661 if (sa == NULL) in pfkey_xfrm_state_lookup()
690 return xfrm_state_lookup(net, DUMMY_MARK, xaddr, sa->sadb_sa_spi, proto, family); in pfkey_xfrm_state_lookup()
731 struct sockaddr *sa, in pfkey_sockaddr_fill() argument
737 struct sockaddr_in *sin = (struct sockaddr_in *)sa; in pfkey_sockaddr_fill()
747 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sa; in pfkey_sockaddr_fill()
765 struct sadb_sa *sa; in __pfkey_xfrm_state2msg() local
835 sa = skb_put(skb, sizeof(struct sadb_sa)); in __pfkey_xfrm_state2msg()
836 sa->sadb_sa_len = sizeof(struct sadb_sa)/sizeof(uint64_t); in __pfkey_xfrm_state2msg()
837 sa->sadb_sa_exttype = SADB_EXT_SA; in __pfkey_xfrm_state2msg()
838 sa->sadb_sa_spi = x->id.spi; in __pfkey_xfrm_state2msg()
839 sa->sadb_sa_replay = x->props.replay_window; in __pfkey_xfrm_state2msg()
842 sa->sadb_sa_state = x->km.dying ? in __pfkey_xfrm_state2msg()
846 sa->sadb_sa_state = SADB_SASTATE_LARVAL; in __pfkey_xfrm_state2msg()
849 sa->sadb_sa_state = SADB_SASTATE_DEAD; in __pfkey_xfrm_state2msg()
852 sa->sadb_sa_auth = 0; in __pfkey_xfrm_state2msg()
855 sa->sadb_sa_auth = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
858 sa->sadb_sa_encrypt = 0; in __pfkey_xfrm_state2msg()
862 sa->sadb_sa_encrypt = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
868 sa->sadb_sa_encrypt = (a && a->pfkey_supported) ? in __pfkey_xfrm_state2msg()
872 sa->sadb_sa_flags = 0; in __pfkey_xfrm_state2msg()
874 sa->sadb_sa_flags |= SADB_SAFLAGS_NOECN; in __pfkey_xfrm_state2msg()
876 sa->sadb_sa_flags |= SADB_SAFLAGS_DECAP_DSCP; in __pfkey_xfrm_state2msg()
878 sa->sadb_sa_flags |= SADB_SAFLAGS_NOPMTUDISC; in __pfkey_xfrm_state2msg()
1065 const struct sadb_sa *sa; in pfkey_msg2xfrm_state() local
1072 sa = ext_hdrs[SADB_EXT_SA - 1]; in pfkey_msg2xfrm_state()
1073 if (!sa || in pfkey_msg2xfrm_state()
1106 if (sa->sadb_sa_auth > SADB_AALG_MAX || in pfkey_msg2xfrm_state()
1108 sa->sadb_sa_encrypt > SADB_X_CALG_MAX) || in pfkey_msg2xfrm_state()
1109 sa->sadb_sa_encrypt > SADB_EALG_MAX) in pfkey_msg2xfrm_state()
1113 sa->sadb_sa_auth != SADB_X_AALG_NULL && in pfkey_msg2xfrm_state()
1118 sa->sadb_sa_encrypt != SADB_EALG_NULL && in pfkey_msg2xfrm_state()
1127 x->id.spi = sa->sadb_sa_spi; in pfkey_msg2xfrm_state()
1128 x->props.replay_window = min_t(unsigned int, sa->sadb_sa_replay, in pfkey_msg2xfrm_state()
1130 if (sa->sadb_sa_flags & SADB_SAFLAGS_NOECN) in pfkey_msg2xfrm_state()
1132 if (sa->sadb_sa_flags & SADB_SAFLAGS_DECAP_DSCP) in pfkey_msg2xfrm_state()
1134 if (sa->sadb_sa_flags & SADB_SAFLAGS_NOPMTUDISC) in pfkey_msg2xfrm_state()
1168 if (sa->sadb_sa_auth) { in pfkey_msg2xfrm_state()
1170 struct xfrm_algo_desc *a = xfrm_aalg_get_byid(sa->sadb_sa_auth); in pfkey_msg2xfrm_state()
1189 x->props.aalgo = sa->sadb_sa_auth; in pfkey_msg2xfrm_state()
1192 if (sa->sadb_sa_encrypt) { in pfkey_msg2xfrm_state()
1194 struct xfrm_algo_desc *a = xfrm_calg_get_byid(sa->sadb_sa_encrypt); in pfkey_msg2xfrm_state()
1205 x->props.calgo = sa->sadb_sa_encrypt; in pfkey_msg2xfrm_state()
1208 struct xfrm_algo_desc *a = xfrm_ealg_get_byid(sa->sadb_sa_encrypt); in pfkey_msg2xfrm_state()
1227 x->props.ealgo = sa->sadb_sa_encrypt; in pfkey_msg2xfrm_state()
2184 u8 *sa = (void *)(rq + 1); in pfkey_xfrm_policy2msg() local
2186 (struct sockaddr *)sa, in pfkey_xfrm_policy2msg()
2189 (struct sockaddr *) (sa + socklen), in pfkey_xfrm_policy2msg()
2250 struct sadb_address *sa; in pfkey_spdadd() local
2275 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1]; in pfkey_spdadd()
2276 xp->family = pfkey_sadb_addr2xfrm_addr(sa, &xp->selector.saddr); in pfkey_spdadd()
2278 xp->selector.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_spdadd()
2279 xp->selector.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spdadd()
2280 xp->selector.sport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spdadd()
2284 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1]; in pfkey_spdadd()
2285 pfkey_sadb_addr2xfrm_addr(sa, &xp->selector.daddr); in pfkey_spdadd()
2286 xp->selector.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_spdadd()
2291 xp->selector.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spdadd()
2293 xp->selector.dport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spdadd()
2364 struct sadb_address *sa; in pfkey_spddelete() local
2383 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1]; in pfkey_spddelete()
2384 sel.family = pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr); in pfkey_spddelete()
2385 sel.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_spddelete()
2386 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spddelete()
2387 sel.sport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spddelete()
2391 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1]; in pfkey_spddelete()
2392 pfkey_sadb_addr2xfrm_addr(sa, &sel.daddr); in pfkey_spddelete()
2393 sel.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_spddelete()
2394 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_spddelete()
2395 sel.dport = ((struct sockaddr_in *)(sa+1))->sin_port; in pfkey_spddelete()
2472 static int parse_sockaddr_pair(struct sockaddr *sa, int ext_len, in parse_sockaddr_pair() argument
2478 if (ext_len < 2 || ext_len < pfkey_sockaddr_pair_size(sa->sa_family)) in parse_sockaddr_pair()
2481 af = pfkey_sockaddr_extract(sa, saddr); in parse_sockaddr_pair()
2486 if (pfkey_sockaddr_extract((struct sockaddr *) (((u8 *)sa) + socklen), in parse_sockaddr_pair()
2551 struct sadb_address *sa; in pfkey_migrate() local
2591 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC - 1]; in pfkey_migrate()
2592 sel.family = pfkey_sadb_addr2xfrm_addr(sa, &sel.saddr); in pfkey_migrate()
2593 sel.prefixlen_s = sa->sadb_address_prefixlen; in pfkey_migrate()
2594 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_migrate()
2595 sel.sport = ((struct sockaddr_in *)(sa + 1))->sin_port; in pfkey_migrate()
2600 sa = ext_hdrs[SADB_EXT_ADDRESS_DST - 1]; in pfkey_migrate()
2601 pfkey_sadb_addr2xfrm_addr(sa, &sel.daddr); in pfkey_migrate()
2602 sel.prefixlen_d = sa->sadb_address_prefixlen; in pfkey_migrate()
2603 sel.proto = pfkey_proto_to_xfrm(sa->sadb_address_proto); in pfkey_migrate()
2604 sel.dport = ((struct sockaddr_in *)(sa + 1))->sin_port; in pfkey_migrate()
3357 struct sadb_sa *sa; in pfkey_send_new_mapping() local
3404 sa = skb_put(skb, sizeof(struct sadb_sa)); in pfkey_send_new_mapping()
3405 sa->sadb_sa_len = sizeof(struct sadb_sa)/sizeof(uint64_t); in pfkey_send_new_mapping()
3406 sa->sadb_sa_exttype = SADB_EXT_SA; in pfkey_send_new_mapping()
3407 sa->sadb_sa_spi = x->id.spi; in pfkey_send_new_mapping()
3408 sa->sadb_sa_replay = 0; in pfkey_send_new_mapping()
3409 sa->sadb_sa_state = 0; in pfkey_send_new_mapping()
3410 sa->sadb_sa_auth = 0; in pfkey_send_new_mapping()
3411 sa->sadb_sa_encrypt = 0; in pfkey_send_new_mapping()
3412 sa->sadb_sa_flags = 0; in pfkey_send_new_mapping()
3497 u8 *sa; in set_sadb_kmaddress() local
3510 sa = (u8 *)(kma + 1); in set_sadb_kmaddress()
3511 if (!pfkey_sockaddr_fill(&k->local, 0, (struct sockaddr *)sa, family) || in set_sadb_kmaddress()
3512 !pfkey_sockaddr_fill(&k->remote, 0, (struct sockaddr *)(sa+socklen), family)) in set_sadb_kmaddress()
3524 u8 *sa; in set_ipsecrequest() local
3538 sa = (u8 *) (rq + 1); in set_ipsecrequest()
3539 if (!pfkey_sockaddr_fill(src, 0, (struct sockaddr *)sa, family) || in set_ipsecrequest()
3540 !pfkey_sockaddr_fill(dst, 0, (struct sockaddr *)(sa + socklen), family)) in set_ipsecrequest()