From patchwork Sun Feb 14 15:18:46 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jamal X-Patchwork-Id: 45303 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id A0C73B7CEC for ; Mon, 15 Feb 2010 02:19:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751346Ab0BNPTL (ORCPT ); Sun, 14 Feb 2010 10:19:11 -0500 Received: from qw-out-2122.google.com ([74.125.92.24]:64587 "EHLO qw-out-2122.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751237Ab0BNPTH (ORCPT ); Sun, 14 Feb 2010 10:19:07 -0500 Received: by qw-out-2122.google.com with SMTP id 5so313015qwi.37 for ; Sun, 14 Feb 2010 07:19:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:from:to:cc:subject :date:message-id:x-mailer:in-reply-to:references; bh=44WMoHyzjQXonAnjM8jF0xxo955R0wPdGNq/fX4QtM4=; b=IXLAMQo3llHzggkPPcJqQX6EKhdC/NsxxE0+FJYms1xiwV9bwl40uahv5lXSN94BpN AUUxdWsOBJw5HGItei59R06SeN7yfXvkbq6eQ/oG+OCM3iP12dxLXhXj4sGnXt99IR2L /nQ7nAsDLRY4SqRBEXxdnMzCSCkM8aXi/1hQI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; b=HVGwv+SIMCQnoMDN4VvgPpc3NoVdcEYmvnzGtlTHZ2bCkSmyv3oURb8Ps3hml12mmJ ixO5IdZWn/gTOZH0ARsdjpSGOx+ohZic75QpkKZiJCFxVXsdIuGvTzbRbq8ZAEkqt3Xe di+sLppNodMdZrzSRk20wu2Fu6c2KFLBpmBBw= Received: by 10.224.52.14 with SMTP id f14mr1874059qag.59.1266160744117; Sun, 14 Feb 2010 07:19:04 -0800 (PST) Received: from localhost.localdomain (CPE0030ab124d2f-CM001bd7a7f1a0.cpe.net.cable.rogers.com [99.240.66.42]) by mx.google.com with ESMTPS id 7sm14714285qwb.57.2010.02.14.07.19.02 (version=SSLv3 cipher=RC4-MD5); Sun, 14 Feb 2010 07:19:03 -0800 (PST) From: jamal To: timo.teras@iki.fi, kaber@trash.net, herbert@gondor.apana.org.au, davem@davemloft.net Cc: netdev@vger.kernel.org, Jamal Hadi Salim Subject: [net-next-2.6 PATCH 1/7] xfrm: introduce basic mark infrastructure Date: Sun, 14 Feb 2010 10:18:46 -0500 Message-Id: <1266160732-946-2-git-send-email-hadi@cyberus.ca> X-Mailer: git-send-email 1.6.0.4 In-Reply-To: <1266160732-946-1-git-send-email-hadi@cyberus.ca> References: <1266160732-946-1-git-send-email-hadi@cyberus.ca> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jamal Hadi Salim Add basic structuring and accessors for xfrm mark Signed-off-by: Jamal Hadi Salim --- 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 */