Lines Matching refs:ext_hdrs
511 static int parse_exthdrs(struct sk_buff *skb, const struct sadb_msg *hdr, void **ext_hdrs)
538 if (ext_hdrs[ext_type-1] != NULL)
560 ext_hdrs[ext_type-1] = (void *) p;
656 static struct xfrm_state *pfkey_xfrm_state_lookup(struct net *net, const struct sadb_msg *hdr, void * const *ext_hdrs)
664 sa = ext_hdrs[SADB_EXT_SA - 1];
673 addr = ext_hdrs[SADB_EXT_ADDRESS_DST - 1];
1065 void * const *ext_hdrs)
1076 sa = ext_hdrs[SADB_EXT_SA - 1];
1078 !present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
1079 ext_hdrs[SADB_EXT_ADDRESS_DST-1]))
1082 !ext_hdrs[SADB_EXT_KEY_ENCRYPT-1])
1085 !ext_hdrs[SADB_EXT_KEY_AUTH-1])
1087 if (!!ext_hdrs[SADB_EXT_LIFETIME_HARD-1] !=
1088 !!ext_hdrs[SADB_EXT_LIFETIME_SOFT-1])
1115 key = ext_hdrs[SADB_EXT_KEY_AUTH - 1];
1120 key = ext_hdrs[SADB_EXT_KEY_ENCRYPT-1];
1141 lifetime = ext_hdrs[SADB_EXT_LIFETIME_HARD - 1];
1148 lifetime = ext_hdrs[SADB_EXT_LIFETIME_SOFT - 1];
1156 sec_ctx = ext_hdrs[SADB_X_EXT_SEC_CTX - 1];
1171 key = ext_hdrs[SADB_EXT_KEY_AUTH - 1];
1217 key = (struct sadb_key*) ext_hdrs[SADB_EXT_KEY_ENCRYPT-1];
1237 x->props.family = pfkey_sadb_addr2xfrm_addr((struct sadb_address *) ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
1239 pfkey_sadb_addr2xfrm_addr((struct sadb_address *) ext_hdrs[SADB_EXT_ADDRESS_DST-1],
1242 if (ext_hdrs[SADB_X_EXT_SA2-1]) {
1243 const struct sadb_x_sa2 *sa2 = ext_hdrs[SADB_X_EXT_SA2-1];
1253 if (ext_hdrs[SADB_EXT_ADDRESS_PROXY-1]) {
1254 const struct sadb_address *addr = ext_hdrs[SADB_EXT_ADDRESS_PROXY-1];
1264 if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) {
1275 n_type = ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1];
1278 if (ext_hdrs[SADB_X_EXT_NAT_T_SPORT-1]) {
1280 ext_hdrs[SADB_X_EXT_NAT_T_SPORT-1];
1283 if (ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1]) {
1285 ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1];
1304 static int pfkey_reserved(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1309 static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1326 if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
1327 ext_hdrs[SADB_EXT_ADDRESS_DST-1]))
1334 if ((sa2 = ext_hdrs[SADB_X_EXT_SA2-1]) != NULL) {
1344 saddr = ext_hdrs[SADB_EXT_ADDRESS_SRC-1];
1345 daddr = ext_hdrs[SADB_EXT_ADDRESS_DST-1];
1378 range = ext_hdrs[SADB_EXT_SPIRANGE-1];
1414 static int pfkey_acquire(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1501 static int pfkey_add(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1508 x = pfkey_msg2xfrm_state(net, hdr, ext_hdrs);
1538 static int pfkey_delete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1545 if (!ext_hdrs[SADB_EXT_SA-1] ||
1546 !present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
1547 ext_hdrs[SADB_EXT_ADDRESS_DST-1]))
1550 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs);
1578 static int pfkey_get(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1586 if (!ext_hdrs[SADB_EXT_SA-1] ||
1587 !present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
1588 ext_hdrs[SADB_EXT_ADDRESS_DST-1]))
1591 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs);
1690 static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1762 static int pfkey_flush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1834 static int pfkey_dump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
1852 if (ext_hdrs[SADB_X_EXT_FILTER - 1]) {
1853 struct sadb_x_filter *xfilter = ext_hdrs[SADB_X_EXT_FILTER - 1];
1887 static int pfkey_promisc(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2250 static int pfkey_spdadd(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2261 if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
2262 ext_hdrs[SADB_EXT_ADDRESS_DST-1]) ||
2263 !ext_hdrs[SADB_X_EXT_POLICY-1])
2266 pol = ext_hdrs[SADB_X_EXT_POLICY-1];
2280 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1];
2289 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1];
2302 sec_ctx = ext_hdrs[SADB_X_EXT_SEC_CTX - 1];
2322 if ((lifetime = ext_hdrs[SADB_EXT_LIFETIME_HARD-1]) != NULL) {
2328 if ((lifetime = ext_hdrs[SADB_EXT_LIFETIME_SOFT-1]) != NULL) {
2365 static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2377 if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC-1],
2378 ext_hdrs[SADB_EXT_ADDRESS_DST-1]) ||
2379 !ext_hdrs[SADB_X_EXT_POLICY-1])
2382 pol = ext_hdrs[SADB_X_EXT_POLICY-1];
2388 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC-1];
2396 sa = ext_hdrs[SADB_EXT_ADDRESS_DST-1];
2404 sec_ctx = ext_hdrs[SADB_X_EXT_SEC_CTX - 1];
2552 const struct sadb_msg *hdr, void * const *ext_hdrs)
2565 if (!present_and_same_family(ext_hdrs[SADB_EXT_ADDRESS_SRC - 1],
2566 ext_hdrs[SADB_EXT_ADDRESS_DST - 1]) ||
2567 !ext_hdrs[SADB_X_EXT_POLICY - 1]) {
2572 kma = ext_hdrs[SADB_X_EXT_KMADDRESS - 1];
2573 pol = ext_hdrs[SADB_X_EXT_POLICY - 1];
2596 sa = ext_hdrs[SADB_EXT_ADDRESS_SRC - 1];
2605 sa = ext_hdrs[SADB_EXT_ADDRESS_DST - 1];
2644 const struct sadb_msg *hdr, void * const *ext_hdrs)
2651 static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2660 if ((pol = ext_hdrs[SADB_X_EXT_POLICY-1]) == NULL)
2741 static int pfkey_spddump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2783 static int pfkey_spdflush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const *ext_hdrs)
2808 const struct sadb_msg *hdr, void * const *ext_hdrs);
2837 void *ext_hdrs[SADB_EXT_MAX];
2847 memset(ext_hdrs, 0, sizeof(ext_hdrs));
2848 err = parse_exthdrs(skb, hdr, ext_hdrs);
2852 err = pfkey_funcs[hdr->sadb_msg_type](sk, skb, hdr, ext_hdrs);