Files
strongswan-ext/linux/include/freeswan/ipsec_kversion.h
T
Martin Willi 997358a6c4 - import of strongswan-2.7.0
- applied patch for charon
2006-04-28 07:14:48 +00:00

228 lines
6.8 KiB
C

#ifndef _FREESWAN_KVERSIONS_H
/*
* header file for FreeS/WAN library functions
* Copyright (C) 1998, 1999, 2000 Henry Spencer.
* Copyright (C) 1999, 2000, 2001 Richard Guy Briggs
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version. See <http://www.fsf.org/copyleft/lgpl.txt>.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
* License for more details.
*
* RCSID $Id: ipsec_kversion.h,v 1.1 2004/03/15 20:35:25 as Exp $
*/
#define _FREESWAN_KVERSIONS_H /* seen it, no need to see it again */
/*
* this file contains a series of atomic defines that depend upon
* kernel version numbers. The kernel versions are arranged
* in version-order number (which is often not chronological)
* and each clause enables or disables a feature.
*/
/*
* First, assorted kernel-version-dependent trickery.
*/
#include <linux/version.h>
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(x,y,z) (((x)<<16)+((y)<<8)+(z))
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
#define HEADER_CACHE_BIND_21
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
#define SPINLOCK
#define PROC_FS_21
#define NETLINK_SOCK
#define NET_21
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,1,19)
#define net_device_stats enet_statistics
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
#define SPINLOCK_23
#define NETDEV_23
# ifndef CONFIG_IP_ALIAS
# define CONFIG_IP_ALIAS
# endif
#include <linux/socket.h>
#include <linux/skbuff.h>
#include <linux/netlink.h>
# ifdef NETLINK_XFRM
# define NETDEV_25
# endif
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,25)
#define PROC_FS_2325
#undef PROC_FS_21
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,30)
#define PROC_NO_DUMMY
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,35)
#define SKB_COPY_EXPAND
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,37)
#define IP_SELECT_IDENT
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,50)) && defined(CONFIG_NETFILTER)
#define SKB_RESET_NFCT
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,2)
#define IP_SELECT_IDENT_NEW
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,4)
#define IPH_is_SKB_PULLED
#define SKB_COW_NEW
#define PROTO_HANDLER_SINGLE_PARM
#define IP_FRAGMENT_LINEARIZE 1
#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,4) */
# ifdef REDHAT_BOGOSITY
# define IP_SELECT_IDENT_NEW
# define IPH_is_SKB_PULLED
# define SKB_COW_NEW
# define PROTO_HANDLER_SINGLE_PARM
# endif /* REDHAT_BOGOSITY */
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,4) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,9)
#define MALLOC_SLAB
#define LINUX_KERNEL_HAS_SNPRINTF
#endif
#ifdef NET_21
# include <linux/in6.h>
#else
/* old kernel in.h has some IPv6 stuff, but not quite enough */
# define s6_addr16 s6_addr
# define AF_INET6 10
# define uint8_t __u8
# define uint16_t __u16
# define uint32_t __u32
# define uint64_t __u64
#endif
#ifdef NET_21
# define ipsec_kfree_skb(a) kfree_skb(a)
#else /* NET_21 */
# define ipsec_kfree_skb(a) kfree_skb(a, FREE_WRITE)
#endif /* NET_21 */
#ifdef NETDEV_23
# define device net_device
# define ipsec_dev_get dev_get_by_name
# define __ipsec_dev_get __dev_get_by_name
# define ipsec_dev_put(x) dev_put(x)
# define __ipsec_dev_put(x) __dev_put(x)
# define ipsec_dev_hold(x) dev_hold(x)
#else /* NETDEV_23 */
# define ipsec_dev_get dev_get
# define __ipsec_dev_put(x)
# define ipsec_dev_put(x)
# define ipsec_dev_hold(x)
#endif /* NETDEV_23 */
#ifndef SPINLOCK
# include <linux/bios32.h>
/* simulate spin locks and read/write locks */
typedef struct {
volatile char lock;
} spinlock_t;
typedef struct {
volatile unsigned int lock;
} rwlock_t;
# define spin_lock_init(x) { (x)->lock = 0;}
# define rw_lock_init(x) { (x)->lock = 0; }
# define spin_lock(x) { while ((x)->lock) barrier(); (x)->lock=1;}
# define spin_lock_irq(x) { cli(); spin_lock(x);}
# define spin_lock_irqsave(x,flags) { save_flags(flags); spin_lock_irq(x);}
# define spin_unlock(x) { (x)->lock=0;}
# define spin_unlock_irq(x) { spin_unlock(x); sti();}
# define spin_unlock_irqrestore(x,flags) { spin_unlock(x); restore_flags(flags);}
# define read_lock(x) spin_lock(x)
# define read_lock_irq(x) spin_lock_irq(x)
# define read_lock_irqsave(x,flags) spin_lock_irqsave(x,flags)
# define read_unlock(x) spin_unlock(x)
# define read_unlock_irq(x) spin_unlock_irq(x)
# define read_unlock_irqrestore(x,flags) spin_unlock_irqrestore(x,flags)
# define write_lock(x) spin_lock(x)
# define write_lock_irq(x) spin_lock_irq(x)
# define write_lock_irqsave(x,flags) spin_lock_irqsave(x,flags)
# define write_unlock(x) spin_unlock(x)
# define write_unlock_irq(x) spin_unlock_irq(x)
# define write_unlock_irqrestore(x,flags) spin_unlock_irqrestore(x,flags)
#endif /* !SPINLOCK */
#ifndef SPINLOCK_23
# define spin_lock_bh(x) spin_lock_irq(x)
# define spin_unlock_bh(x) spin_unlock_irq(x)
# define read_lock_bh(x) read_lock_irq(x)
# define read_unlock_bh(x) read_unlock_irq(x)
# define write_lock_bh(x) write_lock_irq(x)
# define write_unlock_bh(x) write_unlock_irq(x)
#endif /* !SPINLOCK_23 */
#endif /* _FREESWAN_KVERSIONS_H */
/*
* $Log: ipsec_kversion.h,v $
* Revision 1.1 2004/03/15 20:35:25 as
* added files from freeswan-2.04-x509-1.5.3
*
* Revision 1.7 2003/07/31 22:48:08 mcr
* derive NET25-ness from presence of NETLINK_XFRM macro.
*
* Revision 1.6 2003/06/24 20:22:32 mcr
* added new global: ipsecdevices[] so that we can keep track of
* the ipsecX devices. They will be referenced with dev_hold(),
* so 2.2 may need this as well.
*
* Revision 1.5 2003/04/03 17:38:09 rgb
* Centralised ipsec_kfree_skb and ipsec_dev_{get,put}.
*
* Revision 1.4 2002/04/24 07:36:46 mcr
* Moved from ./klips/net/ipsec/ipsec_kversion.h,v
*
* Revision 1.3 2002/04/12 03:21:17 mcr
* three parameter version of ip_select_ident appears first
* in 2.4.2 (RH7.1) not 2.4.4.
*
* Revision 1.2 2002/03/08 21:35:22 rgb
* Defined LINUX_KERNEL_HAS_SNPRINTF to shut up compiler warnings after
* 2.4.9. (Andreas Piesk).
*
* Revision 1.1 2002/01/29 02:11:42 mcr
* removal of kversions.h - sources that needed it now use ipsec_param.h.
* updating of IPv6 structures to match latest in6.h version.
* removed dead code from freeswan.h that also duplicated kversions.h
* code.
*
*
*/