lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 14 Feb 2010 10:18:46 -0500 From: jamal <hadi@...erus.ca> To: timo.teras@....fi, kaber@...sh.net, herbert@...dor.apana.org.au, davem@...emloft.net Cc: netdev@...r.kernel.org, Jamal Hadi Salim <hadi@...erus.ca> Subject: [net-next-2.6 PATCH 1/7] xfrm: introduce basic mark infrastructure From: Jamal Hadi Salim <hadi@...erus.ca> Add basic structuring and accessors for xfrm mark Signed-off-by: Jamal Hadi Salim <hadi@...erus.ca> --- include/linux/xfrm.h | 12 +++++++++--- include/net/xfrm.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 29e04be..887c533 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h @@ -267,8 +267,8 @@ enum xfrm_attr_type_t { XFRMA_ALG_COMP, /* struct xfrm_algo */ XFRMA_ENCAP, /* struct xfrm_algo + struct xfrm_encap_tmpl */ XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */ - XFRMA_SA, - XFRMA_POLICY, + XFRMA_SA, /* struct xfrm_usersa_info */ + XFRMA_POLICY, /*struct xfrm_userpolicy_info */ XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ XFRMA_LTIME_VAL, XFRMA_REPLAY_VAL, @@ -276,17 +276,23 @@ enum xfrm_attr_type_t { XFRMA_ETIMER_THRESH, XFRMA_SRCADDR, /* xfrm_address_t */ XFRMA_COADDR, /* xfrm_address_t */ - XFRMA_LASTUSED, + XFRMA_LASTUSED, /* unsigned long */ XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */ XFRMA_MIGRATE, XFRMA_ALG_AEAD, /* struct xfrm_algo_aead */ XFRMA_KMADDRESS, /* struct xfrm_user_kmaddress */ XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */ + XFRMA_MARK, /* u32 */ __XFRMA_MAX #define XFRMA_MAX (__XFRMA_MAX - 1) }; +struct xfrm_umark { + __u32 v; /* value */ + __u32 m; /* mask */ +}; + enum xfrm_sadattr_type_t { XFRMA_SAD_UNSPEC, XFRMA_SAD_CNT, diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 0beb413..904527f 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -123,6 +123,11 @@ struct xfrm_state_walk { u32 seq; }; +struct xfrm_kmark { + u32 v; /* value */ + u32 m; /* mask */ +}; + /* Full description of state of transformer. */ struct xfrm_state { #ifdef CONFIG_NET_NS @@ -140,6 +145,7 @@ struct xfrm_state { struct xfrm_id id; struct xfrm_selector sel; + struct xfrm_kmark mark; u32 genid; @@ -456,6 +462,7 @@ struct xfrm_tmpl { #define XFRM_MAX_DEPTH 6 + struct xfrm_policy_walk_entry { struct list_head all; u8 dead; @@ -481,6 +488,7 @@ struct xfrm_policy { u32 priority; u32 index; + struct xfrm_kmark mark; struct xfrm_selector selector; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; @@ -1570,4 +1578,24 @@ static inline struct xfrm_state *xfrm_input_state(struct sk_buff *skb) } #endif +static inline int xfrm_mark_get(struct nlattr **attrs, struct xfrm_kmark *m) +{ + if (attrs[XFRMA_MARK]) + memcpy(m, nla_data(attrs[XFRMA_MARK]), sizeof(m)); + else + m->v = m->m = 0; + + return m->v & m->m; +} + +static inline int xfrm_mark_put(struct sk_buff *skb, struct xfrm_kmark *m) +{ + if (m->m & m->v) + NLA_PUT(skb, XFRMA_MARK, sizeof(struct xfrm_kmark), m); + return 0; + +nla_put_failure: + return -1; +} + #endif /* _NET_XFRM_H */ -- 1.6.0.4 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists