Lines Matching refs:hdr
281 struct sadb_msg *hdr; in pfkey_do_dump() local
292 hdr = (struct sadb_msg *) pfk->dump.skb->data; in pfkey_do_dump()
293 hdr->sadb_msg_seq = 0; in pfkey_do_dump()
294 hdr->sadb_msg_errno = rc; in pfkey_do_dump()
313 struct sadb_msg *hdr; in pfkey_error() local
330 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_error()
331 pfkey_hdr_dup(hdr, orig); in pfkey_error()
332 hdr->sadb_msg_errno = (uint8_t) err; in pfkey_error()
333 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / in pfkey_error()
480 static int parse_exthdrs(struct sk_buff *skb, const struct sadb_msg *hdr, void **ext_hdrs) in parse_exthdrs() argument
482 const char *p = (char *) hdr; in parse_exthdrs()
485 len -= sizeof(*hdr); in parse_exthdrs()
486 p += sizeof(*hdr); in parse_exthdrs()
613 static struct xfrm_state *pfkey_xfrm_state_lookup(struct net *net, const struct sadb_msg *hdr, voi… in pfkey_xfrm_state_lookup() argument
625 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_xfrm_state_lookup()
725 struct sadb_msg *hdr; in __pfkey_xfrm_state2msg() local
791 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in __pfkey_xfrm_state2msg()
792 memset(hdr, 0, size); /* XXX do we need this ? */ in __pfkey_xfrm_state2msg()
793 hdr->sadb_msg_len = size / sizeof(uint64_t); in __pfkey_xfrm_state2msg()
1030 const struct sadb_msg *hdr, in pfkey_msg2xfrm_state() argument
1047 if (hdr->sadb_msg_satype == SADB_SATYPE_ESP && in pfkey_msg2xfrm_state()
1050 if (hdr->sadb_msg_satype == SADB_SATYPE_AH && in pfkey_msg2xfrm_state()
1057 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_msg2xfrm_state()
1077 (hdr->sadb_msg_satype == SADB_X_SATYPE_IPCOMP && in pfkey_msg2xfrm_state()
1162 if (hdr->sadb_msg_satype == SADB_X_SATYPE_IPCOMP) { in pfkey_msg2xfrm_state()
1253 x->km.seq = hdr->sadb_msg_seq; in pfkey_msg2xfrm_state()
1262 static int pfkey_reserved(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_reserved() argument
1267 static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_getspi() argument
1288 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_getspi()
1319 if (hdr->sadb_msg_seq) { in pfkey_getspi()
1320 x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq); in pfkey_getspi()
1357 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in pfkey_getspi()
1362 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in pfkey_getspi()
1363 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in pfkey_getspi()
1372 static int pfkey_acquire(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_acquire() argument
1377 if (hdr->sadb_msg_len != sizeof(struct sadb_msg)/8) in pfkey_acquire()
1380 if (hdr->sadb_msg_seq == 0 || hdr->sadb_msg_errno == 0) in pfkey_acquire()
1383 x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq); in pfkey_acquire()
1438 struct sadb_msg *hdr; in key_notify_sa() local
1445 hdr = (struct sadb_msg *) skb->data; in key_notify_sa()
1446 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_sa()
1447 hdr->sadb_msg_type = event2keytype(c->event); in key_notify_sa()
1448 hdr->sadb_msg_satype = pfkey_proto2satype(x->id.proto); in key_notify_sa()
1449 hdr->sadb_msg_errno = 0; in key_notify_sa()
1450 hdr->sadb_msg_reserved = 0; in key_notify_sa()
1451 hdr->sadb_msg_seq = c->seq; in key_notify_sa()
1452 hdr->sadb_msg_pid = c->portid; in key_notify_sa()
1459 static int pfkey_add(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const… in pfkey_add() argument
1466 x = pfkey_msg2xfrm_state(net, hdr, ext_hdrs); in pfkey_add()
1471 if (hdr->sadb_msg_type == SADB_ADD) in pfkey_add()
1484 if (hdr->sadb_msg_type == SADB_ADD) in pfkey_add()
1488 c.seq = hdr->sadb_msg_seq; in pfkey_add()
1489 c.portid = hdr->sadb_msg_pid; in pfkey_add()
1496 static int pfkey_delete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_delete() argument
1508 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs); in pfkey_delete()
1525 c.seq = hdr->sadb_msg_seq; in pfkey_delete()
1526 c.portid = hdr->sadb_msg_pid; in pfkey_delete()
1536 static int pfkey_get(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const… in pfkey_get() argument
1549 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs); in pfkey_get()
1560 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in pfkey_get()
1565 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in pfkey_get()
1566 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in pfkey_get()
1576 struct sadb_msg *hdr; in compose_sadb_supported() local
1597 hdr = (struct sadb_msg *) skb_put(skb, sizeof(*hdr)); in compose_sadb_supported()
1598 pfkey_hdr_dup(hdr, orig); in compose_sadb_supported()
1599 hdr->sadb_msg_errno = 0; in compose_sadb_supported()
1600 hdr->sadb_msg_len = len / sizeof(uint64_t); in compose_sadb_supported()
1648 static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_register() argument
1653 if (hdr->sadb_msg_satype > SADB_SATYPE_MAX) in pfkey_register()
1656 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC) { in pfkey_register()
1657 if (pfk->registered&(1<<hdr->sadb_msg_satype)) in pfkey_register()
1659 pfk->registered |= (1<<hdr->sadb_msg_satype); in pfkey_register()
1664 supp_skb = compose_sadb_supported(hdr, GFP_KERNEL); in pfkey_register()
1666 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC) in pfkey_register()
1667 pfk->registered &= ~(1<<hdr->sadb_msg_satype); in pfkey_register()
1680 struct sadb_msg *hdr; in unicast_flush_resp() local
1686 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in unicast_flush_resp()
1687 memcpy(hdr, ihdr, sizeof(struct sadb_msg)); in unicast_flush_resp()
1688 hdr->sadb_msg_errno = (uint8_t) 0; in unicast_flush_resp()
1689 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in unicast_flush_resp()
1697 struct sadb_msg *hdr; in key_notify_sa_flush() local
1702 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in key_notify_sa_flush()
1703 hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto); in key_notify_sa_flush()
1704 hdr->sadb_msg_type = SADB_FLUSH; in key_notify_sa_flush()
1705 hdr->sadb_msg_seq = c->seq; in key_notify_sa_flush()
1706 hdr->sadb_msg_pid = c->portid; in key_notify_sa_flush()
1707 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_sa_flush()
1708 hdr->sadb_msg_errno = (uint8_t) 0; in key_notify_sa_flush()
1709 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in key_notify_sa_flush()
1710 hdr->sadb_msg_reserved = 0; in key_notify_sa_flush()
1717 static int pfkey_flush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * con… in pfkey_flush() argument
1724 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_flush()
1729 err2 = unicast_flush_resp(sk, hdr); in pfkey_flush()
1737 c.seq = hdr->sadb_msg_seq; in pfkey_flush()
1738 c.portid = hdr->sadb_msg_pid; in pfkey_flush()
1789 static int pfkey_dump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * cons… in pfkey_dump() argument
1798 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_dump()
1818 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_dump()
1819 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_dump()
1827 static int pfkey_promisc(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_promisc() argument
1830 int satype = hdr->sadb_msg_satype; in pfkey_promisc()
1833 if (hdr->sadb_msg_len == (sizeof(*hdr) / sizeof(uint64_t))) { in pfkey_promisc()
2006 struct sadb_msg *hdr; in pfkey_xfrm_policy2msg() local
2020 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_xfrm_policy2msg()
2021 memset(hdr, 0, size); /* XXX do we need this ? */ in pfkey_xfrm_policy2msg()
2153 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_xfrm_policy2msg()
2154 hdr->sadb_msg_reserved = atomic_read(&xp->refcnt); in pfkey_xfrm_policy2msg()
2188 static int pfkey_spdadd(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_spdadd() argument
2278 hdr->sadb_msg_type != SADB_X_SPDUPDATE); in pfkey_spdadd()
2285 if (hdr->sadb_msg_type == SADB_X_SPDUPDATE) in pfkey_spdadd()
2290 c.seq = hdr->sadb_msg_seq; in pfkey_spdadd()
2291 c.portid = hdr->sadb_msg_pid; in pfkey_spdadd()
2303 static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void *… in pfkey_spddelete() argument
2367 c.seq = hdr->sadb_msg_seq; in pfkey_spddelete()
2368 c.portid = hdr->sadb_msg_pid; in pfkey_spddelete()
2380 static int key_pol_get_resp(struct sock *sk, struct xfrm_policy *xp, const struct sadb_msg *hdr, in… in key_pol_get_resp() argument
2397 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in key_pol_get_resp()
2398 out_hdr->sadb_msg_type = hdr->sadb_msg_type; in key_pol_get_resp()
2401 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in key_pol_get_resp()
2402 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in key_pol_get_resp()
2488 const struct sadb_msg *hdr, void * const *ext_hdrs) in pfkey_migrate() argument
2580 const struct sadb_msg *hdr, void * const *ext_hdrs) in pfkey_migrate() argument
2587 static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_spdget() argument
2603 delete = (hdr->sadb_msg_type == SADB_X_SPDDELETE2); in pfkey_spdget()
2614 c.seq = hdr->sadb_msg_seq; in pfkey_spdget()
2615 c.portid = hdr->sadb_msg_pid; in pfkey_spdget()
2620 err = key_pol_get_resp(sk, xp, hdr, dir); in pfkey_spdget()
2677 static int pfkey_spddump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_spddump() argument
2684 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_spddump()
2685 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_spddump()
2696 struct sadb_msg *hdr; in key_notify_policy_flush() local
2701 hdr = (struct sadb_msg *) skb_put(skb_out, sizeof(struct sadb_msg)); in key_notify_policy_flush()
2702 hdr->sadb_msg_type = SADB_X_SPDFLUSH; in key_notify_policy_flush()
2703 hdr->sadb_msg_seq = c->seq; in key_notify_policy_flush()
2704 hdr->sadb_msg_pid = c->portid; in key_notify_policy_flush()
2705 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_policy_flush()
2706 hdr->sadb_msg_errno = (uint8_t) 0; in key_notify_policy_flush()
2707 hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC; in key_notify_policy_flush()
2708 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in key_notify_policy_flush()
2709 hdr->sadb_msg_reserved = 0; in key_notify_policy_flush()
2715 static int pfkey_spdflush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_spdflush() argument
2722 err2 = unicast_flush_resp(sk, hdr); in pfkey_spdflush()
2731 c.portid = hdr->sadb_msg_pid; in pfkey_spdflush()
2732 c.seq = hdr->sadb_msg_seq; in pfkey_spdflush()
2740 const struct sadb_msg *hdr, void * const *ext_hdrs);
2767 static int pfkey_process(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr) in pfkey_process() argument
2776 err = parse_exthdrs(skb, hdr, ext_hdrs); in pfkey_process()
2779 if (pfkey_funcs[hdr->sadb_msg_type]) in pfkey_process()
2780 err = pfkey_funcs[hdr->sadb_msg_type](sk, skb, hdr, ext_hdrs); in pfkey_process()
2787 struct sadb_msg *hdr = NULL; in pfkey_get_base_msg() local
2789 if (skb->len < sizeof(*hdr)) { in pfkey_get_base_msg()
2792 hdr = (struct sadb_msg *) skb->data; in pfkey_get_base_msg()
2793 if (hdr->sadb_msg_version != PF_KEY_V2 || in pfkey_get_base_msg()
2794 hdr->sadb_msg_reserved != 0 || in pfkey_get_base_msg()
2795 (hdr->sadb_msg_type <= SADB_RESERVED || in pfkey_get_base_msg()
2796 hdr->sadb_msg_type > SADB_MAX)) { in pfkey_get_base_msg()
2797 hdr = NULL; in pfkey_get_base_msg()
2799 } else if (hdr->sadb_msg_len != (skb->len / in pfkey_get_base_msg()
2801 hdr->sadb_msg_len < (sizeof(struct sadb_msg) / in pfkey_get_base_msg()
2803 hdr = NULL; in pfkey_get_base_msg()
2809 return hdr; in pfkey_get_base_msg()
3081 struct sadb_msg *hdr; in pfkey_send_acquire() local
3113 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_acquire()
3114 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_acquire()
3115 hdr->sadb_msg_type = SADB_ACQUIRE; in pfkey_send_acquire()
3116 hdr->sadb_msg_satype = pfkey_proto2satype(x->id.proto); in pfkey_send_acquire()
3117 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_send_acquire()
3118 hdr->sadb_msg_errno = 0; in pfkey_send_acquire()
3119 hdr->sadb_msg_reserved = 0; in pfkey_send_acquire()
3120 hdr->sadb_msg_seq = x->km.seq = get_acqseq(); in pfkey_send_acquire()
3121 hdr->sadb_msg_pid = 0; in pfkey_send_acquire()
3278 struct sadb_msg *hdr; in pfkey_send_new_mapping() local
3315 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_new_mapping()
3316 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_new_mapping()
3317 hdr->sadb_msg_type = SADB_X_NAT_T_NEW_MAPPING; in pfkey_send_new_mapping()
3318 hdr->sadb_msg_satype = satype; in pfkey_send_new_mapping()
3319 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_send_new_mapping()
3320 hdr->sadb_msg_errno = 0; in pfkey_send_new_mapping()
3321 hdr->sadb_msg_reserved = 0; in pfkey_send_new_mapping()
3322 hdr->sadb_msg_seq = x->km.seq = get_acqseq(); in pfkey_send_new_mapping()
3323 hdr->sadb_msg_pid = 0; in pfkey_send_new_mapping()
3482 struct sadb_msg *hdr; in pfkey_send_migrate() local
3524 hdr = (struct sadb_msg *)skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_migrate()
3525 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_migrate()
3526 hdr->sadb_msg_type = SADB_X_MIGRATE; in pfkey_send_migrate()
3527 hdr->sadb_msg_satype = pfkey_proto2satype(m->proto); in pfkey_send_migrate()
3528 hdr->sadb_msg_len = size / 8; in pfkey_send_migrate()
3529 hdr->sadb_msg_errno = 0; in pfkey_send_migrate()
3530 hdr->sadb_msg_reserved = 0; in pfkey_send_migrate()
3531 hdr->sadb_msg_seq = 0; in pfkey_send_migrate()
3532 hdr->sadb_msg_pid = 0; in pfkey_send_migrate()
3595 struct sadb_msg *hdr = NULL; in pfkey_sendmsg() local
3616 hdr = pfkey_get_base_msg(skb, &err); in pfkey_sendmsg()
3617 if (!hdr) in pfkey_sendmsg()
3621 err = pfkey_process(sk, skb, hdr); in pfkey_sendmsg()
3625 if (err && hdr && pfkey_error(hdr, err, sk) == 0) in pfkey_sendmsg()