calipso.h (1590B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * CALIPSO - Common Architecture Label IPv6 Security Option 4 * 5 * This is an implementation of the CALIPSO protocol as specified in 6 * RFC 5570. 7 * 8 * Authors: Paul Moore <paul@paul-moore.com> 9 * Huw Davies <huw@codeweavers.com> 10 */ 11 12/* 13 * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 14 * (c) Copyright Huw Davies <huw@codeweavers.com>, 2015 15 */ 16 17#ifndef _CALIPSO_H 18#define _CALIPSO_H 19 20#include <linux/types.h> 21#include <linux/rcupdate.h> 22#include <linux/list.h> 23#include <linux/net.h> 24#include <linux/skbuff.h> 25#include <net/netlabel.h> 26#include <net/request_sock.h> 27#include <linux/refcount.h> 28#include <asm/unaligned.h> 29 30/* known doi values */ 31#define CALIPSO_DOI_UNKNOWN 0x00000000 32 33/* doi mapping types */ 34#define CALIPSO_MAP_UNKNOWN 0 35#define CALIPSO_MAP_PASS 2 36 37/* 38 * CALIPSO DOI definitions 39 */ 40 41/* DOI definition struct */ 42struct calipso_doi { 43 u32 doi; 44 u32 type; 45 46 refcount_t refcount; 47 struct list_head list; 48 struct rcu_head rcu; 49}; 50 51/* 52 * Sysctl Variables 53 */ 54extern int calipso_cache_enabled; 55extern int calipso_cache_bucketsize; 56 57#ifdef CONFIG_NETLABEL 58int __init calipso_init(void); 59void calipso_exit(void); 60bool calipso_validate(const struct sk_buff *skb, const unsigned char *option); 61#else 62static inline int __init calipso_init(void) 63{ 64 return 0; 65} 66 67static inline void calipso_exit(void) 68{ 69} 70static inline bool calipso_validate(const struct sk_buff *skb, 71 const unsigned char *option) 72{ 73 return true; 74} 75#endif /* CONFIG_NETLABEL */ 76 77#endif /* _CALIPSO_H */