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()
1254 x->km.seq = hdr->sadb_msg_seq; in pfkey_msg2xfrm_state()
1263 static int pfkey_reserved(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_reserved() argument
1268 static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_getspi() argument
1289 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_getspi()
1320 if (hdr->sadb_msg_seq) { in pfkey_getspi()
1321 x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq); in pfkey_getspi()
1358 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in pfkey_getspi()
1363 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in pfkey_getspi()
1364 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in pfkey_getspi()
1373 static int pfkey_acquire(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_acquire() argument
1378 if (hdr->sadb_msg_len != sizeof(struct sadb_msg)/8) in pfkey_acquire()
1381 if (hdr->sadb_msg_seq == 0 || hdr->sadb_msg_errno == 0) in pfkey_acquire()
1384 x = xfrm_find_acq_byseq(net, DUMMY_MARK, hdr->sadb_msg_seq); in pfkey_acquire()
1439 struct sadb_msg *hdr; in key_notify_sa() local
1446 hdr = (struct sadb_msg *) skb->data; in key_notify_sa()
1447 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_sa()
1448 hdr->sadb_msg_type = event2keytype(c->event); in key_notify_sa()
1449 hdr->sadb_msg_satype = pfkey_proto2satype(x->id.proto); in key_notify_sa()
1450 hdr->sadb_msg_errno = 0; in key_notify_sa()
1451 hdr->sadb_msg_reserved = 0; in key_notify_sa()
1452 hdr->sadb_msg_seq = c->seq; in key_notify_sa()
1453 hdr->sadb_msg_pid = c->portid; in key_notify_sa()
1460 static int pfkey_add(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const… in pfkey_add() argument
1467 x = pfkey_msg2xfrm_state(net, hdr, ext_hdrs); in pfkey_add()
1472 if (hdr->sadb_msg_type == SADB_ADD) in pfkey_add()
1485 if (hdr->sadb_msg_type == SADB_ADD) in pfkey_add()
1489 c.seq = hdr->sadb_msg_seq; in pfkey_add()
1490 c.portid = hdr->sadb_msg_pid; in pfkey_add()
1497 static int pfkey_delete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_delete() argument
1509 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs); in pfkey_delete()
1526 c.seq = hdr->sadb_msg_seq; in pfkey_delete()
1527 c.portid = hdr->sadb_msg_pid; in pfkey_delete()
1537 static int pfkey_get(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * const… in pfkey_get() argument
1550 x = pfkey_xfrm_state_lookup(net, hdr, ext_hdrs); in pfkey_get()
1561 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in pfkey_get()
1566 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in pfkey_get()
1567 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in pfkey_get()
1577 struct sadb_msg *hdr; in compose_sadb_supported() local
1598 hdr = (struct sadb_msg *) skb_put(skb, sizeof(*hdr)); in compose_sadb_supported()
1599 pfkey_hdr_dup(hdr, orig); in compose_sadb_supported()
1600 hdr->sadb_msg_errno = 0; in compose_sadb_supported()
1601 hdr->sadb_msg_len = len / sizeof(uint64_t); in compose_sadb_supported()
1649 static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_register() argument
1654 if (hdr->sadb_msg_satype > SADB_SATYPE_MAX) in pfkey_register()
1657 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC) { in pfkey_register()
1658 if (pfk->registered&(1<<hdr->sadb_msg_satype)) in pfkey_register()
1660 pfk->registered |= (1<<hdr->sadb_msg_satype); in pfkey_register()
1665 supp_skb = compose_sadb_supported(hdr, GFP_KERNEL); in pfkey_register()
1667 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC) in pfkey_register()
1668 pfk->registered &= ~(1<<hdr->sadb_msg_satype); in pfkey_register()
1681 struct sadb_msg *hdr; in unicast_flush_resp() local
1687 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in unicast_flush_resp()
1688 memcpy(hdr, ihdr, sizeof(struct sadb_msg)); in unicast_flush_resp()
1689 hdr->sadb_msg_errno = (uint8_t) 0; in unicast_flush_resp()
1690 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in unicast_flush_resp()
1698 struct sadb_msg *hdr; in key_notify_sa_flush() local
1703 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in key_notify_sa_flush()
1704 hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto); in key_notify_sa_flush()
1705 hdr->sadb_msg_type = SADB_FLUSH; in key_notify_sa_flush()
1706 hdr->sadb_msg_seq = c->seq; in key_notify_sa_flush()
1707 hdr->sadb_msg_pid = c->portid; in key_notify_sa_flush()
1708 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_sa_flush()
1709 hdr->sadb_msg_errno = (uint8_t) 0; in key_notify_sa_flush()
1710 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in key_notify_sa_flush()
1711 hdr->sadb_msg_reserved = 0; in key_notify_sa_flush()
1718 static int pfkey_flush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * con… in pfkey_flush() argument
1725 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_flush()
1730 err2 = unicast_flush_resp(sk, hdr); in pfkey_flush()
1738 c.seq = hdr->sadb_msg_seq; in pfkey_flush()
1739 c.portid = hdr->sadb_msg_pid; in pfkey_flush()
1790 static int pfkey_dump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * cons… in pfkey_dump() argument
1799 proto = pfkey_satype2proto(hdr->sadb_msg_satype); in pfkey_dump()
1819 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_dump()
1820 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_dump()
1828 static int pfkey_promisc(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_promisc() argument
1831 int satype = hdr->sadb_msg_satype; in pfkey_promisc()
1834 if (hdr->sadb_msg_len == (sizeof(*hdr) / sizeof(uint64_t))) { in pfkey_promisc()
2007 struct sadb_msg *hdr; in pfkey_xfrm_policy2msg() local
2021 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_xfrm_policy2msg()
2022 memset(hdr, 0, size); /* XXX do we need this ? */ in pfkey_xfrm_policy2msg()
2154 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_xfrm_policy2msg()
2155 hdr->sadb_msg_reserved = atomic_read(&xp->refcnt); in pfkey_xfrm_policy2msg()
2189 static int pfkey_spdadd(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_spdadd() argument
2279 hdr->sadb_msg_type != SADB_X_SPDUPDATE); in pfkey_spdadd()
2286 if (hdr->sadb_msg_type == SADB_X_SPDUPDATE) in pfkey_spdadd()
2291 c.seq = hdr->sadb_msg_seq; in pfkey_spdadd()
2292 c.portid = hdr->sadb_msg_pid; in pfkey_spdadd()
2304 static int pfkey_spddelete(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void *… in pfkey_spddelete() argument
2368 c.seq = hdr->sadb_msg_seq; in pfkey_spddelete()
2369 c.portid = hdr->sadb_msg_pid; in pfkey_spddelete()
2381 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
2398 out_hdr->sadb_msg_version = hdr->sadb_msg_version; in key_pol_get_resp()
2399 out_hdr->sadb_msg_type = hdr->sadb_msg_type; in key_pol_get_resp()
2402 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; in key_pol_get_resp()
2403 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; in key_pol_get_resp()
2489 const struct sadb_msg *hdr, void * const *ext_hdrs) in pfkey_migrate() argument
2581 const struct sadb_msg *hdr, void * const *ext_hdrs) in pfkey_migrate() argument
2588 static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * co… in pfkey_spdget() argument
2604 delete = (hdr->sadb_msg_type == SADB_X_SPDDELETE2); in pfkey_spdget()
2615 c.seq = hdr->sadb_msg_seq; in pfkey_spdget()
2616 c.portid = hdr->sadb_msg_pid; in pfkey_spdget()
2621 err = key_pol_get_resp(sk, xp, hdr, dir); in pfkey_spdget()
2678 static int pfkey_spddump(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * c… in pfkey_spddump() argument
2685 pfk->dump.msg_version = hdr->sadb_msg_version; in pfkey_spddump()
2686 pfk->dump.msg_portid = hdr->sadb_msg_pid; in pfkey_spddump()
2697 struct sadb_msg *hdr; in key_notify_policy_flush() local
2702 hdr = (struct sadb_msg *) skb_put(skb_out, sizeof(struct sadb_msg)); in key_notify_policy_flush()
2703 hdr->sadb_msg_type = SADB_X_SPDFLUSH; in key_notify_policy_flush()
2704 hdr->sadb_msg_seq = c->seq; in key_notify_policy_flush()
2705 hdr->sadb_msg_pid = c->portid; in key_notify_policy_flush()
2706 hdr->sadb_msg_version = PF_KEY_V2; in key_notify_policy_flush()
2707 hdr->sadb_msg_errno = (uint8_t) 0; in key_notify_policy_flush()
2708 hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC; in key_notify_policy_flush()
2709 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); in key_notify_policy_flush()
2710 hdr->sadb_msg_reserved = 0; in key_notify_policy_flush()
2716 static int pfkey_spdflush(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr, void * … in pfkey_spdflush() argument
2723 err2 = unicast_flush_resp(sk, hdr); in pfkey_spdflush()
2732 c.portid = hdr->sadb_msg_pid; in pfkey_spdflush()
2733 c.seq = hdr->sadb_msg_seq; in pfkey_spdflush()
2741 const struct sadb_msg *hdr, void * const *ext_hdrs);
2768 static int pfkey_process(struct sock *sk, struct sk_buff *skb, const struct sadb_msg *hdr) in pfkey_process() argument
2777 err = parse_exthdrs(skb, hdr, ext_hdrs); in pfkey_process()
2780 if (pfkey_funcs[hdr->sadb_msg_type]) in pfkey_process()
2781 err = pfkey_funcs[hdr->sadb_msg_type](sk, skb, hdr, ext_hdrs); in pfkey_process()
2788 struct sadb_msg *hdr = NULL; in pfkey_get_base_msg() local
2790 if (skb->len < sizeof(*hdr)) { in pfkey_get_base_msg()
2793 hdr = (struct sadb_msg *) skb->data; in pfkey_get_base_msg()
2794 if (hdr->sadb_msg_version != PF_KEY_V2 || in pfkey_get_base_msg()
2795 hdr->sadb_msg_reserved != 0 || in pfkey_get_base_msg()
2796 (hdr->sadb_msg_type <= SADB_RESERVED || in pfkey_get_base_msg()
2797 hdr->sadb_msg_type > SADB_MAX)) { in pfkey_get_base_msg()
2798 hdr = NULL; in pfkey_get_base_msg()
2800 } else if (hdr->sadb_msg_len != (skb->len / in pfkey_get_base_msg()
2802 hdr->sadb_msg_len < (sizeof(struct sadb_msg) / in pfkey_get_base_msg()
2804 hdr = NULL; in pfkey_get_base_msg()
2810 return hdr; in pfkey_get_base_msg()
3082 struct sadb_msg *hdr; in pfkey_send_acquire() local
3114 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_acquire()
3115 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_acquire()
3116 hdr->sadb_msg_type = SADB_ACQUIRE; in pfkey_send_acquire()
3117 hdr->sadb_msg_satype = pfkey_proto2satype(x->id.proto); in pfkey_send_acquire()
3118 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_send_acquire()
3119 hdr->sadb_msg_errno = 0; in pfkey_send_acquire()
3120 hdr->sadb_msg_reserved = 0; in pfkey_send_acquire()
3121 hdr->sadb_msg_seq = x->km.seq = get_acqseq(); in pfkey_send_acquire()
3122 hdr->sadb_msg_pid = 0; in pfkey_send_acquire()
3279 struct sadb_msg *hdr; in pfkey_send_new_mapping() local
3316 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_new_mapping()
3317 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_new_mapping()
3318 hdr->sadb_msg_type = SADB_X_NAT_T_NEW_MAPPING; in pfkey_send_new_mapping()
3319 hdr->sadb_msg_satype = satype; in pfkey_send_new_mapping()
3320 hdr->sadb_msg_len = size / sizeof(uint64_t); in pfkey_send_new_mapping()
3321 hdr->sadb_msg_errno = 0; in pfkey_send_new_mapping()
3322 hdr->sadb_msg_reserved = 0; in pfkey_send_new_mapping()
3323 hdr->sadb_msg_seq = x->km.seq = get_acqseq(); in pfkey_send_new_mapping()
3324 hdr->sadb_msg_pid = 0; in pfkey_send_new_mapping()
3483 struct sadb_msg *hdr; in pfkey_send_migrate() local
3525 hdr = (struct sadb_msg *)skb_put(skb, sizeof(struct sadb_msg)); in pfkey_send_migrate()
3526 hdr->sadb_msg_version = PF_KEY_V2; in pfkey_send_migrate()
3527 hdr->sadb_msg_type = SADB_X_MIGRATE; in pfkey_send_migrate()
3528 hdr->sadb_msg_satype = pfkey_proto2satype(m->proto); in pfkey_send_migrate()
3529 hdr->sadb_msg_len = size / 8; in pfkey_send_migrate()
3530 hdr->sadb_msg_errno = 0; in pfkey_send_migrate()
3531 hdr->sadb_msg_reserved = 0; in pfkey_send_migrate()
3532 hdr->sadb_msg_seq = 0; in pfkey_send_migrate()
3533 hdr->sadb_msg_pid = 0; in pfkey_send_migrate()
3596 struct sadb_msg *hdr = NULL; in pfkey_sendmsg() local
3617 hdr = pfkey_get_base_msg(skb, &err); in pfkey_sendmsg()
3618 if (!hdr) in pfkey_sendmsg()
3622 err = pfkey_process(sk, skb, hdr); in pfkey_sendmsg()
3626 if (err && hdr && pfkey_error(hdr, err, sk) == 0) in pfkey_sendmsg()