diff options
author | Jamal Hadi Salim <hadi@cyberus.ca> | 2010-02-22 11:32:54 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-22 16:19:45 -0800 |
commit | bf825f81b454fae2ffe1b675f3a549656726440e (patch) | |
tree | 8096391060484f831c0f2e4a7cef3448b4ff4845 /include/net | |
parent | 7f6b9dbd5afbd966a82dcbafc5ed62305eb9d479 (diff) | |
download | op-kernel-dev-bf825f81b454fae2ffe1b675f3a549656726440e.zip op-kernel-dev-bf825f81b454fae2ffe1b675f3a549656726440e.tar.gz |
xfrm: introduce basic mark infrastructure
Add basic structuring and accessors for xfrm mark
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/xfrm.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 0beb413..39f151c 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -140,6 +140,7 @@ struct xfrm_state { struct xfrm_id id; struct xfrm_selector sel; + struct xfrm_mark mark; u32 genid; @@ -481,6 +482,7 @@ struct xfrm_policy { u32 priority; u32 index; + struct xfrm_mark mark; struct xfrm_selector selector; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; @@ -1570,4 +1572,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_mark *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_mark *m) +{ + if (m->m | m->v) + NLA_PUT(skb, XFRMA_MARK, sizeof(struct xfrm_mark), m); + return 0; + +nla_put_failure: + return -1; +} + #endif /* _NET_XFRM_H */ |