From 9fd51e9b0ad33a89a83fdbbb66bd20d85f7893fb Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 4 Feb 2000 03:21:18 +0000 Subject: Import of Linux 2.2.12 subset (ipv4 stack and related) --- pfinet/linux-src/include/linux/ipsec.h | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 pfinet/linux-src/include/linux/ipsec.h (limited to 'pfinet/linux-src/include/linux/ipsec.h') diff --git a/pfinet/linux-src/include/linux/ipsec.h b/pfinet/linux-src/include/linux/ipsec.h new file mode 100644 index 00000000..b9d7bcc6 --- /dev/null +++ b/pfinet/linux-src/include/linux/ipsec.h @@ -0,0 +1,69 @@ +/* + * Definitions for the SECurity layer + * + * Author: + * Robert Muchsel + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + */ + +#ifndef _LINUX_IPSEC_H +#define _LINUX_IPSEC_H + +#include +#include +#include +#include + +/* Values for the set/getsockopt calls */ + +/* These defines are compatible with NRL IPv6, however their semantics + is different */ + +#define IPSEC_LEVEL_NONE -1 /* send plaintext, accept any */ +#define IPSEC_LEVEL_DEFAULT 0 /* encrypt/authenticate if possible */ + /* the default MUST be 0, because a */ + /* socket is initialized with 0's */ +#define IPSEC_LEVEL_USE 1 /* use outbound, don't require inbound */ +#define IPSEC_LEVEL_REQUIRE 2 /* require both directions */ +#define IPSEC_LEVEL_UNIQUE 2 /* for compatibility only */ + +#ifdef __KERNEL__ + +/* skb bit flags set on packet input processing */ + +#define RCV_SEC 0x0f /* options on receive */ +#define RCV_AUTH 0x01 /* was authenticated */ +#define RCV_CRYPT 0x02 /* was encrypted */ +#define RCV_TUNNEL 0x04 /* was tunneled */ +#define SND_SEC 0xf0 /* options on send, these are */ +#define SND_AUTH 0x10 /* currently unused */ +#define SND_CRYPT 0x20 +#define SND_TUNNEL 0x40 + +/* + * FIXME: ignores network encryption for now.. + */ + +#ifdef CONFIG_NET_SECURITY +extern __inline__ int ipsec_sk_policy(struct sock *sk, struct sk_buff *skb) +{ + return ((sk->authentication < IPSEC_LEVEL_REQUIRE) || + (skb->security & RCV_AUTH)) && + ((sk->encryption < IPSEC_LEVEL_REQUIRE) || + (skb->security & RCV_CRYPT)); +} + +#else + +extern __inline__ int ipsec_sk_policy(struct sock *sk, struct sk_buff *skb) +{ + return 1; +} +#endif /* CONFIG */ + +#endif /* __KERNEL__ */ +#endif /* _LINUX_IPSEC_H */ -- cgit v1.2.3