diff options
Diffstat (limited to 'testing/linux-grsec/0001-xfrm-introduce-basic-mark-infrastructure.patch')
-rw-r--r-- | testing/linux-grsec/0001-xfrm-introduce-basic-mark-infrastructure.patch | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/testing/linux-grsec/0001-xfrm-introduce-basic-mark-infrastructure.patch b/testing/linux-grsec/0001-xfrm-introduce-basic-mark-infrastructure.patch new file mode 100644 index 00000000..363a34b3 --- /dev/null +++ b/testing/linux-grsec/0001-xfrm-introduce-basic-mark-infrastructure.patch @@ -0,0 +1,102 @@ +From 1b02e31d0a236e36378ccf5ecf0738d7d91c2508 Mon Sep 17 00:00:00 2001 +From: Jamal Hadi Salim <hadi@cyberus.ca> +Date: Mon, 22 Feb 2010 11:32:54 +0000 +Subject: [PATCH 1/7] 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> +--- + include/linux/xfrm.h | 13 ++++++++++--- + include/net/xfrm.h | 22 ++++++++++++++++++++++ + 2 files changed, 32 insertions(+), 3 deletions(-) + +diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h +index 2d4ec15..3eabe30 100644 +--- a/include/linux/xfrm.h ++++ b/include/linux/xfrm.h +@@ -269,8 +269,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, +@@ -278,16 +278,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_PLACE_HOLDER, ++ XFRMA_MARK, /* struct xfrm_mark */ + __XFRMA_MAX + + #define XFRMA_MAX (__XFRMA_MAX - 1) + }; + ++struct xfrm_mark { ++ __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 223e90a..ba8d34f 100644 +--- a/include/net/xfrm.h ++++ b/include/net/xfrm.h +@@ -138,6 +138,7 @@ struct xfrm_state + + struct xfrm_id id; + struct xfrm_selector sel; ++ struct xfrm_mark mark; + + u32 genid; + +@@ -483,6 +484,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; +@@ -1569,4 +1571,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 */ +-- +1.6.3.3 + |