mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (79 commits) [IPX]: Fix NULL pointer dereference on ipx unload [ATM]: atmarp.h needs to always include linux/types.h [NET]: Fix net/socket.c warnings. [NET]: cleanup sock_from_file() [NET]: change layout of ehash table [S390]: Add AF_IUCV socket support [S390]: Adapt special message interface to new IUCV API [S390]: Adapt netiucv driver to new IUCV API [S390]: Adapt vmlogrdr driver to new IUCV API [S390]: Adapt monreader driver to new IUCV API [S390]: Rewrite of the IUCV base code, part 2 [S390]: Rewrite of the IUCV base code, part 1 [X.25]: Adds /proc/net/x25/forward to view active forwarded calls. [X.25]: Adds /proc/sys/net/x25/x25_forward to control forwarding. [X.25]: Add call forwarding [XFRM]: xfrm_migrate() needs exporting to modules. [PFKEYV2]: CONFIG_NET_KEY_MIGRATE option [PFKEYV2]: Extension for dynamic update of endpoint address(es) [XFRM]: CONFIG_XFRM_MIGRATE option [XFRM]: User interface for handling XFRM_MSG_MIGRATE ...
This commit is contained in:
commit
f049274b01
213 changed files with 10783 additions and 6108 deletions
|
|
@ -18,8 +18,8 @@ struct module;
|
|||
struct seq_file;
|
||||
|
||||
struct crypto_type {
|
||||
unsigned int (*ctxsize)(struct crypto_alg *alg);
|
||||
int (*init)(struct crypto_tfm *tfm);
|
||||
unsigned int (*ctxsize)(struct crypto_alg *alg, u32 type, u32 mask);
|
||||
int (*init)(struct crypto_tfm *tfm, u32 type, u32 mask);
|
||||
void (*exit)(struct crypto_tfm *tfm);
|
||||
void (*show)(struct seq_file *m, struct crypto_alg *alg);
|
||||
};
|
||||
|
|
@ -93,7 +93,8 @@ struct crypto_template *crypto_lookup_template(const char *name);
|
|||
int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg,
|
||||
struct crypto_instance *inst);
|
||||
void crypto_drop_spawn(struct crypto_spawn *spawn);
|
||||
struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn);
|
||||
struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type,
|
||||
u32 mask);
|
||||
|
||||
struct crypto_alg *crypto_get_attr_alg(void *param, unsigned int len,
|
||||
u32 type, u32 mask);
|
||||
|
|
@ -132,11 +133,28 @@ static inline void *crypto_blkcipher_ctx_aligned(struct crypto_blkcipher *tfm)
|
|||
return crypto_tfm_ctx_aligned(&tfm->base);
|
||||
}
|
||||
|
||||
static inline struct crypto_cipher *crypto_spawn_cipher(
|
||||
struct crypto_spawn *spawn)
|
||||
{
|
||||
u32 type = CRYPTO_ALG_TYPE_CIPHER;
|
||||
u32 mask = CRYPTO_ALG_TYPE_MASK;
|
||||
|
||||
return __crypto_cipher_cast(crypto_spawn_tfm(spawn, type, mask));
|
||||
}
|
||||
|
||||
static inline struct cipher_alg *crypto_cipher_alg(struct crypto_cipher *tfm)
|
||||
{
|
||||
return &crypto_cipher_tfm(tfm)->__crt_alg->cra_cipher;
|
||||
}
|
||||
|
||||
static inline struct crypto_hash *crypto_spawn_hash(struct crypto_spawn *spawn)
|
||||
{
|
||||
u32 type = CRYPTO_ALG_TYPE_HASH;
|
||||
u32 mask = CRYPTO_ALG_TYPE_HASH_MASK;
|
||||
|
||||
return __crypto_hash_cast(crypto_spawn_tfm(spawn, type, mask));
|
||||
}
|
||||
|
||||
static inline void *crypto_hash_ctx_aligned(struct crypto_hash *tfm)
|
||||
{
|
||||
return crypto_tfm_ctx_aligned(&tfm->base);
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@
|
|||
#ifndef _LINUX_ATMARP_H
|
||||
#define _LINUX_ATMARP_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/types.h>
|
||||
#endif
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -51,15 +51,9 @@
|
|||
/*
|
||||
* Transform masks and values (for crt_flags).
|
||||
*/
|
||||
#define CRYPTO_TFM_MODE_MASK 0x000000ff
|
||||
#define CRYPTO_TFM_REQ_MASK 0x000fff00
|
||||
#define CRYPTO_TFM_RES_MASK 0xfff00000
|
||||
|
||||
#define CRYPTO_TFM_MODE_ECB 0x00000001
|
||||
#define CRYPTO_TFM_MODE_CBC 0x00000002
|
||||
#define CRYPTO_TFM_MODE_CFB 0x00000004
|
||||
#define CRYPTO_TFM_MODE_CTR 0x00000008
|
||||
|
||||
#define CRYPTO_TFM_REQ_WEAK_KEY 0x00000100
|
||||
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200
|
||||
#define CRYPTO_TFM_RES_WEAK_KEY 0x00100000
|
||||
|
|
@ -71,12 +65,8 @@
|
|||
/*
|
||||
* Miscellaneous stuff.
|
||||
*/
|
||||
#define CRYPTO_UNSPEC 0
|
||||
#define CRYPTO_MAX_ALG_NAME 64
|
||||
|
||||
#define CRYPTO_DIR_ENCRYPT 1
|
||||
#define CRYPTO_DIR_DECRYPT 0
|
||||
|
||||
/*
|
||||
* The macro CRYPTO_MINALIGN_ATTR (along with the void * type in the actual
|
||||
* declaration) is used to ensure that the crypto_tfm context structure is
|
||||
|
|
@ -148,19 +138,6 @@ struct cipher_alg {
|
|||
unsigned int keylen);
|
||||
void (*cia_encrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
|
||||
void (*cia_decrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src);
|
||||
|
||||
unsigned int (*cia_encrypt_ecb)(const struct cipher_desc *desc,
|
||||
u8 *dst, const u8 *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
unsigned int (*cia_decrypt_ecb)(const struct cipher_desc *desc,
|
||||
u8 *dst, const u8 *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
unsigned int (*cia_encrypt_cbc)(const struct cipher_desc *desc,
|
||||
u8 *dst, const u8 *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
unsigned int (*cia_decrypt_cbc)(const struct cipher_desc *desc,
|
||||
u8 *dst, const u8 *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
};
|
||||
|
||||
struct digest_alg {
|
||||
|
|
@ -243,11 +220,6 @@ int crypto_unregister_alg(struct crypto_alg *alg);
|
|||
#ifdef CONFIG_CRYPTO
|
||||
int crypto_has_alg(const char *name, u32 type, u32 mask);
|
||||
#else
|
||||
static inline int crypto_alg_available(const char *name, u32 flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int crypto_has_alg(const char *name, u32 type, u32 mask)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -339,13 +311,18 @@ struct crypto_tfm {
|
|||
void *__crt_ctx[] CRYPTO_MINALIGN_ATTR;
|
||||
};
|
||||
|
||||
#define crypto_cipher crypto_tfm
|
||||
#define crypto_comp crypto_tfm
|
||||
|
||||
struct crypto_blkcipher {
|
||||
struct crypto_tfm base;
|
||||
};
|
||||
|
||||
struct crypto_cipher {
|
||||
struct crypto_tfm base;
|
||||
};
|
||||
|
||||
struct crypto_comp {
|
||||
struct crypto_tfm base;
|
||||
};
|
||||
|
||||
struct crypto_hash {
|
||||
struct crypto_tfm base;
|
||||
};
|
||||
|
|
@ -395,40 +372,11 @@ static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)
|
|||
return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK;
|
||||
}
|
||||
|
||||
static unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm)
|
||||
__deprecated;
|
||||
static inline unsigned int crypto_tfm_alg_min_keysize(struct crypto_tfm *tfm)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->__crt_alg->cra_cipher.cia_min_keysize;
|
||||
}
|
||||
|
||||
static unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm)
|
||||
__deprecated;
|
||||
static inline unsigned int crypto_tfm_alg_max_keysize(struct crypto_tfm *tfm)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->__crt_alg->cra_cipher.cia_max_keysize;
|
||||
}
|
||||
|
||||
static unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm) __deprecated;
|
||||
static inline unsigned int crypto_tfm_alg_ivsize(struct crypto_tfm *tfm)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->crt_cipher.cit_ivsize;
|
||||
}
|
||||
|
||||
static inline unsigned int crypto_tfm_alg_blocksize(struct crypto_tfm *tfm)
|
||||
{
|
||||
return tfm->__crt_alg->cra_blocksize;
|
||||
}
|
||||
|
||||
static inline unsigned int crypto_tfm_alg_digestsize(struct crypto_tfm *tfm)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_DIGEST);
|
||||
return tfm->__crt_alg->cra_digest.dia_digestsize;
|
||||
}
|
||||
|
||||
static inline unsigned int crypto_tfm_alg_alignmask(struct crypto_tfm *tfm)
|
||||
{
|
||||
return tfm->__crt_alg->cra_alignmask;
|
||||
|
|
@ -633,7 +581,7 @@ static inline struct crypto_cipher *crypto_alloc_cipher(const char *alg_name,
|
|||
|
||||
static inline struct crypto_tfm *crypto_cipher_tfm(struct crypto_cipher *tfm)
|
||||
{
|
||||
return tfm;
|
||||
return &tfm->base;
|
||||
}
|
||||
|
||||
static inline void crypto_free_cipher(struct crypto_cipher *tfm)
|
||||
|
|
@ -809,76 +757,6 @@ static inline int crypto_hash_setkey(struct crypto_hash *hash,
|
|||
return crypto_hash_crt(hash)->setkey(hash, key, keylen);
|
||||
}
|
||||
|
||||
static int crypto_cipher_encrypt(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
static inline int crypto_cipher_encrypt(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->crt_cipher.cit_encrypt(tfm, dst, src, nbytes);
|
||||
}
|
||||
|
||||
static int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes, u8 *iv) __deprecated;
|
||||
static inline int crypto_cipher_encrypt_iv(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes, u8 *iv)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->crt_cipher.cit_encrypt_iv(tfm, dst, src, nbytes, iv);
|
||||
}
|
||||
|
||||
static int crypto_cipher_decrypt(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes) __deprecated;
|
||||
static inline int crypto_cipher_decrypt(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->crt_cipher.cit_decrypt(tfm, dst, src, nbytes);
|
||||
}
|
||||
|
||||
static int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes, u8 *iv) __deprecated;
|
||||
static inline int crypto_cipher_decrypt_iv(struct crypto_tfm *tfm,
|
||||
struct scatterlist *dst,
|
||||
struct scatterlist *src,
|
||||
unsigned int nbytes, u8 *iv)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
return tfm->crt_cipher.cit_decrypt_iv(tfm, dst, src, nbytes, iv);
|
||||
}
|
||||
|
||||
static void crypto_cipher_set_iv(struct crypto_tfm *tfm,
|
||||
const u8 *src, unsigned int len) __deprecated;
|
||||
static inline void crypto_cipher_set_iv(struct crypto_tfm *tfm,
|
||||
const u8 *src, unsigned int len)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
memcpy(tfm->crt_cipher.cit_iv, src, len);
|
||||
}
|
||||
|
||||
static void crypto_cipher_get_iv(struct crypto_tfm *tfm,
|
||||
u8 *dst, unsigned int len) __deprecated;
|
||||
static inline void crypto_cipher_get_iv(struct crypto_tfm *tfm,
|
||||
u8 *dst, unsigned int len)
|
||||
{
|
||||
BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER);
|
||||
memcpy(dst, tfm->crt_cipher.cit_iv, len);
|
||||
}
|
||||
|
||||
static inline struct crypto_comp *__crypto_comp_cast(struct crypto_tfm *tfm)
|
||||
{
|
||||
return (struct crypto_comp *)tfm;
|
||||
|
|
@ -903,7 +781,7 @@ static inline struct crypto_comp *crypto_alloc_comp(const char *alg_name,
|
|||
|
||||
static inline struct crypto_tfm *crypto_comp_tfm(struct crypto_comp *tfm)
|
||||
{
|
||||
return tfm;
|
||||
return &tfm->base;
|
||||
}
|
||||
|
||||
static inline void crypto_free_comp(struct crypto_comp *tfm)
|
||||
|
|
@ -934,14 +812,16 @@ static inline int crypto_comp_compress(struct crypto_comp *tfm,
|
|||
const u8 *src, unsigned int slen,
|
||||
u8 *dst, unsigned int *dlen)
|
||||
{
|
||||
return crypto_comp_crt(tfm)->cot_compress(tfm, src, slen, dst, dlen);
|
||||
return crypto_comp_crt(tfm)->cot_compress(crypto_comp_tfm(tfm),
|
||||
src, slen, dst, dlen);
|
||||
}
|
||||
|
||||
static inline int crypto_comp_decompress(struct crypto_comp *tfm,
|
||||
const u8 *src, unsigned int slen,
|
||||
u8 *dst, unsigned int *dlen)
|
||||
{
|
||||
return crypto_comp_crt(tfm)->cot_decompress(tfm, src, slen, dst, dlen);
|
||||
return crypto_comp_crt(tfm)->cot_decompress(crypto_comp_tfm(tfm),
|
||||
src, slen, dst, dlen);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_CRYPTO_H */
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ struct sockaddr_ll
|
|||
#define PACKET_RX_RING 5
|
||||
#define PACKET_STATISTICS 6
|
||||
#define PACKET_COPY_THRESH 7
|
||||
#define PACKET_AUXDATA 8
|
||||
|
||||
struct tpacket_stats
|
||||
{
|
||||
|
|
@ -48,6 +49,15 @@ struct tpacket_stats
|
|||
unsigned int tp_drops;
|
||||
};
|
||||
|
||||
struct tpacket_auxdata
|
||||
{
|
||||
__u32 tp_status;
|
||||
__u32 tp_len;
|
||||
__u32 tp_snaplen;
|
||||
__u16 tp_mac;
|
||||
__u16 tp_net;
|
||||
};
|
||||
|
||||
struct tpacket_hdr
|
||||
{
|
||||
unsigned long tp_status;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
struct poll_table_struct;
|
||||
struct inode;
|
||||
|
||||
#define NPROTO 32 /* should be enough for now.. */
|
||||
#define NPROTO 33 /* should be enough for now.. */
|
||||
|
||||
#define SYS_SOCKET 1 /* sys_socket(2) */
|
||||
#define SYS_BIND 2 /* sys_bind(2) */
|
||||
|
|
|
|||
|
|
@ -589,7 +589,7 @@ extern int dev_open(struct net_device *dev);
|
|||
extern int dev_close(struct net_device *dev);
|
||||
extern int dev_queue_xmit(struct sk_buff *skb);
|
||||
extern int register_netdevice(struct net_device *dev);
|
||||
extern int unregister_netdevice(struct net_device *dev);
|
||||
extern void unregister_netdevice(struct net_device *dev);
|
||||
extern void free_netdev(struct net_device *dev);
|
||||
extern void synchronize_net(void);
|
||||
extern int register_netdevice_notifier(struct notifier_block *nb);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ header-y += xt_tcpmss.h
|
|||
header-y += xt_tcpudp.h
|
||||
header-y += xt_SECMARK.h
|
||||
header-y += xt_CONNSECMARK.h
|
||||
header-y += xt_TCPMSS.h
|
||||
|
||||
unifdef-y += nf_conntrack_common.h
|
||||
unifdef-y += nf_conntrack_ftp.h
|
||||
|
|
|
|||
21
include/linux/netfilter/nf_conntrack_sane.h
Normal file
21
include/linux/netfilter/nf_conntrack_sane.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef _NF_CONNTRACK_SANE_H
|
||||
#define _NF_CONNTRACK_SANE_H
|
||||
/* SANE tracking. */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define SANE_PORT 6566
|
||||
|
||||
enum sane_state {
|
||||
SANE_STATE_NORMAL,
|
||||
SANE_STATE_START_REQUESTED,
|
||||
};
|
||||
|
||||
/* This structure exists only once per master */
|
||||
struct nf_ct_sane_master {
|
||||
enum sane_state state;
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _NF_CONNTRACK_SANE_H */
|
||||
|
|
@ -27,6 +27,9 @@ enum tcp_conntrack {
|
|||
/* This sender sent FIN first */
|
||||
#define IP_CT_TCP_FLAG_CLOSE_INIT 0x04
|
||||
|
||||
/* Be liberal in window checking */
|
||||
#define IP_CT_TCP_FLAG_BE_LIBERAL 0x08
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
struct ip_ct_tcp_state {
|
||||
|
|
@ -34,7 +37,6 @@ struct ip_ct_tcp_state {
|
|||
u_int32_t td_maxend; /* max of ack + max(win, 1) */
|
||||
u_int32_t td_maxwin; /* max(win) */
|
||||
u_int8_t td_scale; /* window scale factor */
|
||||
u_int8_t loose; /* used when connection picked up from the middle */
|
||||
u_int8_t flags; /* per direction options */
|
||||
};
|
||||
|
||||
|
|
|
|||
10
include/linux/netfilter/xt_TCPMSS.h
Normal file
10
include/linux/netfilter/xt_TCPMSS.h
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef _XT_TCPMSS_H
|
||||
#define _XT_TCPMSS_H
|
||||
|
||||
struct xt_tcpmss_info {
|
||||
u_int16_t mss;
|
||||
};
|
||||
|
||||
#define XT_TCPMSS_CLAMP_PMTU 0xffff
|
||||
|
||||
#endif /* _XT_TCPMSS_H */
|
||||
|
|
@ -16,6 +16,7 @@ enum ip_nat_manip_type
|
|||
|
||||
#define IP_NAT_RANGE_MAP_IPS 1
|
||||
#define IP_NAT_RANGE_PROTO_SPECIFIED 2
|
||||
#define IP_NAT_RANGE_PROTO_RANDOM 4 /* add randomness to "port" selection */
|
||||
|
||||
/* NAT sequence number modifications */
|
||||
struct ip_nat_seq {
|
||||
|
|
|
|||
|
|
@ -272,25 +272,9 @@ ipt_get_target(struct ipt_entry *e)
|
|||
#include <linux/init.h>
|
||||
extern void ipt_init(void) __init;
|
||||
|
||||
#define ipt_register_target(tgt) \
|
||||
({ (tgt)->family = AF_INET; \
|
||||
xt_register_target(tgt); })
|
||||
#define ipt_unregister_target(tgt) xt_unregister_target(tgt)
|
||||
|
||||
#define ipt_register_match(mtch) \
|
||||
({ (mtch)->family = AF_INET; \
|
||||
xt_register_match(mtch); })
|
||||
#define ipt_unregister_match(mtch) xt_unregister_match(mtch)
|
||||
|
||||
//#define ipt_register_table(tbl, repl) xt_register_table(AF_INET, tbl, repl)
|
||||
//#define ipt_unregister_table(tbl) xt_unregister_table(AF_INET, tbl)
|
||||
|
||||
extern int ipt_register_table(struct ipt_table *table,
|
||||
extern int ipt_register_table(struct xt_table *table,
|
||||
const struct ipt_replace *repl);
|
||||
extern void ipt_unregister_table(struct ipt_table *table);
|
||||
|
||||
/* net/sched/ipt.c: Gimme access to your targets! Gets target->me. */
|
||||
extern struct ipt_target *ipt_find_target(const char *name, u8 revision);
|
||||
extern void ipt_unregister_table(struct xt_table *table);
|
||||
|
||||
/* Standard entry. */
|
||||
struct ipt_standard
|
||||
|
|
@ -315,7 +299,7 @@ extern unsigned int ipt_do_table(struct sk_buff **pskb,
|
|||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
struct ipt_table *table);
|
||||
struct xt_table *table);
|
||||
|
||||
#define IPT_ALIGN(s) XT_ALIGN(s)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
#ifndef _IPT_TCPMSS_H
|
||||
#define _IPT_TCPMSS_H
|
||||
|
||||
struct ipt_tcpmss_info {
|
||||
u_int16_t mss;
|
||||
};
|
||||
#include <linux/netfilter/xt_TCPMSS.h>
|
||||
|
||||
#define IPT_TCPMSS_CLAMP_PMTU 0xffff
|
||||
#define ipt_tcpmss_info xt_tcpmss_info
|
||||
#define IPT_TCPMSS_CLAMP_PMTU XT_TCPMSS_CLAMP_PMTU
|
||||
|
||||
#endif /*_IPT_TCPMSS_H*/
|
||||
|
|
|
|||
|
|
@ -104,6 +104,25 @@ struct ip6t_entry
|
|||
unsigned char elems[0];
|
||||
};
|
||||
|
||||
/* Standard entry */
|
||||
struct ip6t_standard
|
||||
{
|
||||
struct ip6t_entry entry;
|
||||
struct ip6t_standard_target target;
|
||||
};
|
||||
|
||||
struct ip6t_error_target
|
||||
{
|
||||
struct ip6t_entry_target target;
|
||||
char errorname[IP6T_FUNCTION_MAXNAMELEN];
|
||||
};
|
||||
|
||||
struct ip6t_error
|
||||
{
|
||||
struct ip6t_entry entry;
|
||||
struct ip6t_error_target target;
|
||||
};
|
||||
|
||||
/*
|
||||
* New IP firewall options for [gs]etsockopt at the RAW IP level.
|
||||
* Unlike BSD Linux inherits IP options so you don't have to use
|
||||
|
|
@ -286,24 +305,14 @@ ip6t_get_target(struct ip6t_entry *e)
|
|||
#include <linux/init.h>
|
||||
extern void ip6t_init(void) __init;
|
||||
|
||||
#define ip6t_register_target(tgt) \
|
||||
({ (tgt)->family = AF_INET6; \
|
||||
xt_register_target(tgt); })
|
||||
#define ip6t_unregister_target(tgt) xt_unregister_target(tgt)
|
||||
|
||||
#define ip6t_register_match(match) \
|
||||
({ (match)->family = AF_INET6; \
|
||||
xt_register_match(match); })
|
||||
#define ip6t_unregister_match(match) xt_unregister_match(match)
|
||||
|
||||
extern int ip6t_register_table(struct ip6t_table *table,
|
||||
extern int ip6t_register_table(struct xt_table *table,
|
||||
const struct ip6t_replace *repl);
|
||||
extern void ip6t_unregister_table(struct ip6t_table *table);
|
||||
extern void ip6t_unregister_table(struct xt_table *table);
|
||||
extern unsigned int ip6t_do_table(struct sk_buff **pskb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
struct ip6t_table *table);
|
||||
struct xt_table *table);
|
||||
|
||||
/* Check for an extension */
|
||||
extern int ip6t_ext_hdr(u8 nexthdr);
|
||||
|
|
|
|||
15
include/linux/netfilter_ipv6/ip6t_mh.h
Normal file
15
include/linux/netfilter_ipv6/ip6t_mh.h
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef _IP6T_MH_H
|
||||
#define _IP6T_MH_H
|
||||
|
||||
/* MH matching stuff */
|
||||
struct ip6t_mh
|
||||
{
|
||||
u_int8_t types[2]; /* MH type range */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_mh. */
|
||||
#define IP6T_MH_INV_TYPE 0x01 /* Invert the sense of type. */
|
||||
#define IP6T_MH_INV_MASK 0x01 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_MH_H*/
|
||||
|
|
@ -251,7 +251,8 @@ struct sadb_x_sec_ctx {
|
|||
#define SADB_X_SPDEXPIRE 21
|
||||
#define SADB_X_SPDDELETE2 22
|
||||
#define SADB_X_NAT_T_NEW_MAPPING 23
|
||||
#define SADB_MAX 23
|
||||
#define SADB_X_MIGRATE 24
|
||||
#define SADB_MAX 24
|
||||
|
||||
/* Security Association flags */
|
||||
#define SADB_SAFLAGS_PFS 1
|
||||
|
|
@ -297,6 +298,7 @@ struct sadb_x_sec_ctx {
|
|||
#define SADB_X_EALG_BLOWFISHCBC 7
|
||||
#define SADB_EALG_NULL 11
|
||||
#define SADB_X_EALG_AESCBC 12
|
||||
#define SADB_X_EALG_CAMELLIACBC 22
|
||||
#define SADB_EALG_MAX 253 /* last EALG */
|
||||
/* private allocations should use 249-255 (RFC2407) */
|
||||
#define SADB_X_EALG_SERPENTCBC 252 /* draft-ietf-ipsec-ciph-aes-cbc-00 */
|
||||
|
|
|
|||
|
|
@ -187,7 +187,8 @@ struct ucred {
|
|||
#define AF_LLC 26 /* Linux LLC */
|
||||
#define AF_TIPC 30 /* TIPC sockets */
|
||||
#define AF_BLUETOOTH 31 /* Bluetooth sockets */
|
||||
#define AF_MAX 32 /* For now.. */
|
||||
#define AF_IUCV 32 /* IUCV sockets */
|
||||
#define AF_MAX 33 /* For now.. */
|
||||
|
||||
/* Protocol families, same as address families. */
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
|
|
@ -220,6 +221,7 @@ struct ucred {
|
|||
#define PF_LLC AF_LLC
|
||||
#define PF_TIPC AF_TIPC
|
||||
#define PF_BLUETOOTH AF_BLUETOOTH
|
||||
#define PF_IUCV AF_IUCV
|
||||
#define PF_MAX AF_MAX
|
||||
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
|
|
|
|||
|
|
@ -699,7 +699,8 @@ enum {
|
|||
NET_X25_CALL_REQUEST_TIMEOUT=2,
|
||||
NET_X25_RESET_REQUEST_TIMEOUT=3,
|
||||
NET_X25_CLEAR_REQUEST_TIMEOUT=4,
|
||||
NET_X25_ACK_HOLD_BACK_TIMEOUT=5
|
||||
NET_X25_ACK_HOLD_BACK_TIMEOUT=5,
|
||||
NET_X25_FORWARD=6
|
||||
};
|
||||
|
||||
/* /proc/sys/net/token-ring */
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ struct tcp_sock {
|
|||
struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */
|
||||
struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/
|
||||
|
||||
struct tcp_sack_block recv_sack_cache[4];
|
||||
struct tcp_sack_block_wire recv_sack_cache[4];
|
||||
|
||||
/* from STCP, retrans queue hinting */
|
||||
struct sk_buff* lost_skb_hint;
|
||||
|
|
|
|||
|
|
@ -516,9 +516,6 @@ struct wan_device {
|
|||
/* Public functions available for device drivers */
|
||||
extern int register_wan_device(struct wan_device *wandev);
|
||||
extern int unregister_wan_device(char *name);
|
||||
__be16 wanrouter_type_trans(struct sk_buff *skb, struct net_device *dev);
|
||||
int wanrouter_encapsulate(struct sk_buff *skb, struct net_device *dev,
|
||||
unsigned short type);
|
||||
|
||||
/* Proc interface functions. These must not be called by the drivers! */
|
||||
extern int wanrouter_proc_init(void);
|
||||
|
|
@ -527,11 +524,6 @@ extern int wanrouter_proc_add(struct wan_device *wandev);
|
|||
extern int wanrouter_proc_delete(struct wan_device *wandev);
|
||||
extern int wanrouter_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
|
||||
|
||||
extern void lock_adapter_irq(spinlock_t *lock, unsigned long *smp_flags);
|
||||
extern void unlock_adapter_irq(spinlock_t *lock, unsigned long *smp_flags);
|
||||
|
||||
|
||||
|
||||
/* Public Data */
|
||||
/* list of registered devices */
|
||||
extern struct wan_device *wanrouter_router_devlist;
|
||||
|
|
|
|||
|
|
@ -178,6 +178,9 @@ enum {
|
|||
XFRM_MSG_REPORT,
|
||||
#define XFRM_MSG_REPORT XFRM_MSG_REPORT
|
||||
|
||||
XFRM_MSG_MIGRATE,
|
||||
#define XFRM_MSG_MIGRATE XFRM_MSG_MIGRATE
|
||||
|
||||
__XFRM_MSG_MAX
|
||||
};
|
||||
#define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
|
||||
|
|
@ -256,6 +259,7 @@ enum xfrm_attr_type_t {
|
|||
XFRMA_COADDR, /* xfrm_address_t */
|
||||
XFRMA_LASTUSED,
|
||||
XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */
|
||||
XFRMA_MIGRATE,
|
||||
__XFRMA_MAX
|
||||
|
||||
#define XFRMA_MAX (__XFRMA_MAX - 1)
|
||||
|
|
@ -351,6 +355,19 @@ struct xfrm_user_report {
|
|||
struct xfrm_selector sel;
|
||||
};
|
||||
|
||||
struct xfrm_user_migrate {
|
||||
xfrm_address_t old_daddr;
|
||||
xfrm_address_t old_saddr;
|
||||
xfrm_address_t new_daddr;
|
||||
xfrm_address_t new_saddr;
|
||||
__u8 proto;
|
||||
__u8 mode;
|
||||
__u16 reserved;
|
||||
__u32 reqid;
|
||||
__u16 old_family;
|
||||
__u16 new_family;
|
||||
};
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* backwards compatibility for userspace */
|
||||
#define XFRMGRP_ACQUIRE 1
|
||||
|
|
@ -375,6 +392,8 @@ enum xfrm_nlgroups {
|
|||
#define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS
|
||||
XFRMNLGRP_REPORT,
|
||||
#define XFRMNLGRP_REPORT XFRMNLGRP_REPORT
|
||||
XFRMNLGRP_MIGRATE,
|
||||
#define XFRMNLGRP_MIGRATE XFRMNLGRP_MIGRATE
|
||||
__XFRMNLGRP_MAX
|
||||
};
|
||||
#define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1)
|
||||
|
|
|
|||
|
|
@ -34,12 +34,13 @@
|
|||
#include <asm/byteorder.h>
|
||||
|
||||
/* This is for all connections with a full identity, no wildcards.
|
||||
* New scheme, half the table is for TIME_WAIT, the other half is
|
||||
* for the rest. I'll experiment with dynamic table growth later.
|
||||
* One chain is dedicated to TIME_WAIT sockets.
|
||||
* I'll experiment with dynamic table growth later.
|
||||
*/
|
||||
struct inet_ehash_bucket {
|
||||
rwlock_t lock;
|
||||
struct hlist_head chain;
|
||||
struct hlist_head twchain;
|
||||
};
|
||||
|
||||
/* There are a few simple rules, which allow for local port reuse by
|
||||
|
|
@ -97,8 +98,7 @@ struct inet_hashinfo {
|
|||
*
|
||||
* TCP_ESTABLISHED <= sk->sk_state < TCP_CLOSE
|
||||
*
|
||||
* First half of the table is for sockets not in TIME_WAIT, second half
|
||||
* is for TIME_WAIT sockets only.
|
||||
* TIME_WAIT sockets use a separate chain (twchain).
|
||||
*/
|
||||
struct inet_ehash_bucket *ehash;
|
||||
|
||||
|
|
@ -369,7 +369,7 @@ static inline struct sock *
|
|||
}
|
||||
|
||||
/* Must check for a TIME_WAIT'er before going to listener hash. */
|
||||
sk_for_each(sk, node, &(head + hashinfo->ehash_size)->chain) {
|
||||
sk_for_each(sk, node, &head->twchain) {
|
||||
if (INET_TW_MATCH(sk, hash, acookie, saddr, daddr, ports, dif))
|
||||
goto hit;
|
||||
}
|
||||
|
|
|
|||
106
include/net/iucv/af_iucv.h
Normal file
106
include/net/iucv/af_iucv.h
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* Copyright 2006 IBM Corporation
|
||||
* IUCV protocol stack for Linux on zSeries
|
||||
* Version 1.0
|
||||
* Author(s): Jennifer Hunt <jenhunt@us.ibm.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __AFIUCV_H
|
||||
#define __AFIUCV_H
|
||||
|
||||
#include <asm/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
#ifndef AF_IUCV
|
||||
#define AF_IUCV 32
|
||||
#define PF_IUCV AF_IUCV
|
||||
#endif
|
||||
|
||||
/* Connection and socket states */
|
||||
enum {
|
||||
IUCV_CONNECTED = 1,
|
||||
IUCV_OPEN,
|
||||
IUCV_BOUND,
|
||||
IUCV_LISTEN,
|
||||
IUCV_SEVERED,
|
||||
IUCV_DISCONN,
|
||||
IUCV_CLOSED
|
||||
};
|
||||
|
||||
#define IUCV_QUEUELEN_DEFAULT 65535
|
||||
#define IUCV_CONN_TIMEOUT (HZ * 40)
|
||||
#define IUCV_DISCONN_TIMEOUT (HZ * 2)
|
||||
#define IUCV_CONN_IDLE_TIMEOUT (HZ * 60)
|
||||
#define IUCV_BUFSIZE_DEFAULT 32768
|
||||
|
||||
/* IUCV socket address */
|
||||
struct sockaddr_iucv {
|
||||
sa_family_t siucv_family;
|
||||
unsigned short siucv_port; /* Reserved */
|
||||
unsigned int siucv_addr; /* Reserved */
|
||||
char siucv_nodeid[8]; /* Reserved */
|
||||
char siucv_user_id[8]; /* Guest User Id */
|
||||
char siucv_name[8]; /* Application Name */
|
||||
};
|
||||
|
||||
|
||||
/* Common socket structures and functions */
|
||||
|
||||
#define iucv_sk(__sk) ((struct iucv_sock *) __sk)
|
||||
|
||||
struct iucv_sock {
|
||||
struct sock sk;
|
||||
char src_user_id[8];
|
||||
char src_name[8];
|
||||
char dst_user_id[8];
|
||||
char dst_name[8];
|
||||
struct list_head accept_q;
|
||||
struct sock *parent;
|
||||
struct iucv_path *path;
|
||||
struct sk_buff_head send_skb_q;
|
||||
unsigned int send_tag;
|
||||
};
|
||||
|
||||
struct iucv_sock_list {
|
||||
struct hlist_head head;
|
||||
rwlock_t lock;
|
||||
atomic_t autobind_name;
|
||||
};
|
||||
|
||||
static void iucv_sock_destruct(struct sock *sk);
|
||||
static void iucv_sock_cleanup_listen(struct sock *parent);
|
||||
static void iucv_sock_kill(struct sock *sk);
|
||||
static void iucv_sock_close(struct sock *sk);
|
||||
static int iucv_sock_create(struct socket *sock, int proto);
|
||||
static int iucv_sock_bind(struct socket *sock, struct sockaddr *addr,
|
||||
int addr_len);
|
||||
static int iucv_sock_connect(struct socket *sock, struct sockaddr *addr,
|
||||
int alen, int flags);
|
||||
static int iucv_sock_listen(struct socket *sock, int backlog);
|
||||
static int iucv_sock_accept(struct socket *sock, struct socket *newsock,
|
||||
int flags);
|
||||
static int iucv_sock_getname(struct socket *sock, struct sockaddr *addr,
|
||||
int *len, int peer);
|
||||
static int iucv_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t len);
|
||||
static int iucv_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t len, int flags);
|
||||
unsigned int iucv_sock_poll(struct file *file, struct socket *sock,
|
||||
poll_table *wait);
|
||||
static int iucv_sock_release(struct socket *sock);
|
||||
static int iucv_sock_shutdown(struct socket *sock, int how);
|
||||
|
||||
void iucv_sock_link(struct iucv_sock_list *l, struct sock *s);
|
||||
void iucv_sock_unlink(struct iucv_sock_list *l, struct sock *s);
|
||||
int iucv_sock_wait_state(struct sock *sk, int state, int state2,
|
||||
unsigned long timeo);
|
||||
int iucv_sock_wait_cnt(struct sock *sk, unsigned long timeo);
|
||||
void iucv_accept_enqueue(struct sock *parent, struct sock *sk);
|
||||
void iucv_accept_unlink(struct sock *sk);
|
||||
struct sock *iucv_accept_dequeue(struct sock *parent, struct socket *newsock);
|
||||
|
||||
#endif /* __IUCV_H */
|
||||
415
include/net/iucv/iucv.h
Normal file
415
include/net/iucv/iucv.h
Normal file
|
|
@ -0,0 +1,415 @@
|
|||
/*
|
||||
* drivers/s390/net/iucv.h
|
||||
* IUCV base support.
|
||||
*
|
||||
* S390 version
|
||||
* Copyright 2000, 2006 IBM Corporation
|
||||
* Author(s):Alan Altmark (Alan_Altmark@us.ibm.com)
|
||||
* Xenia Tkatschow (xenia@us.ibm.com)
|
||||
* Rewritten for af_iucv:
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
*
|
||||
*
|
||||
* Functionality:
|
||||
* To explore any of the IUCV functions, one must first register their
|
||||
* program using iucv_register(). Once your program has successfully
|
||||
* completed a register, it can exploit the other functions.
|
||||
* For furthur reference on all IUCV functionality, refer to the
|
||||
* CP Programming Services book, also available on the web thru
|
||||
* www.ibm.com/s390/vm/pubs, manual # SC24-5760
|
||||
*
|
||||
* Definition of Return Codes
|
||||
* - All positive return codes including zero are reflected back
|
||||
* from CP. The definition of each return code can be found in
|
||||
* CP Programming Services book.
|
||||
* - Return Code of:
|
||||
* -EINVAL: Invalid value
|
||||
* -ENOMEM: storage allocation failed
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/debug.h>
|
||||
|
||||
/*
|
||||
* IUCV option flags usable by device drivers:
|
||||
*
|
||||
* IUCV_IPRMDATA Indicates that your program can handle a message in the
|
||||
* parameter list / a message is sent in the parameter list.
|
||||
* Used for iucv_path_accept, iucv_path_connect,
|
||||
* iucv_message_reply, iucv_message_send, iucv_message_send2way.
|
||||
* IUCV_IPQUSCE Indicates that you do not want to receive messages on this
|
||||
* path until an iucv_path_resume is issued.
|
||||
* Used for iucv_path_accept, iucv_path_connect.
|
||||
* IUCV_IPBUFLST Indicates that an address list is used for the message data.
|
||||
* Used for iucv_message_receive, iucv_message_send,
|
||||
* iucv_message_send2way.
|
||||
* IUCV_IPPRTY Specifies that you want to send priority messages.
|
||||
* Used for iucv_path_accept, iucv_path_connect,
|
||||
* iucv_message_reply, iucv_message_send, iucv_message_send2way.
|
||||
* IUCV_IPSYNC Indicates a synchronous send request.
|
||||
* Used for iucv_message_send, iucv_message_send2way.
|
||||
* IUCV_IPANSLST Indicates that an address list is used for the reply data.
|
||||
* Used for iucv_message_reply, iucv_message_send2way.
|
||||
* IUCV_IPLOCAL Specifies that the communication partner has to be on the
|
||||
* local system. If local is specified no target class can be
|
||||
* specified.
|
||||
* Used for iucv_path_connect.
|
||||
*
|
||||
* All flags are defined in the input field IPFLAGS1 of each function
|
||||
* and can be found in CP Programming Services.
|
||||
*/
|
||||
#define IUCV_IPRMDATA 0x80
|
||||
#define IUCV_IPQUSCE 0x40
|
||||
#define IUCV_IPBUFLST 0x40
|
||||
#define IUCV_IPPRTY 0x20
|
||||
#define IUCV_IPANSLST 0x08
|
||||
#define IUCV_IPSYNC 0x04
|
||||
#define IUCV_IPLOCAL 0x01
|
||||
|
||||
/*
|
||||
* iucv_array : Defines buffer array.
|
||||
* Inside the array may be 31- bit addresses and 31-bit lengths.
|
||||
* Use a pointer to an iucv_array as the buffer, reply or answer
|
||||
* parameter on iucv_message_send, iucv_message_send2way, iucv_message_receive
|
||||
* and iucv_message_reply if IUCV_IPBUFLST or IUCV_IPANSLST are used.
|
||||
*/
|
||||
struct iucv_array {
|
||||
u32 address;
|
||||
u32 length;
|
||||
} __attribute__ ((aligned (8)));
|
||||
|
||||
extern struct bus_type iucv_bus;
|
||||
extern struct device *iucv_root;
|
||||
|
||||
/*
|
||||
* struct iucv_path
|
||||
* pathid: 16 bit path identification
|
||||
* msglim: 16 bit message limit
|
||||
* flags: properties of the path: IPRMDATA, IPQUSCE, IPPRTY
|
||||
* handler: address of iucv handler structure
|
||||
* private: private information of the handler associated with the path
|
||||
* list: list_head for the iucv_handler path list.
|
||||
*/
|
||||
struct iucv_path {
|
||||
u16 pathid;
|
||||
u16 msglim;
|
||||
u8 flags;
|
||||
void *private;
|
||||
struct iucv_handler *handler;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
/*
|
||||
* struct iucv_message
|
||||
* id: 32 bit message id
|
||||
* audit: 32 bit error information of purged or replied messages
|
||||
* class: 32 bit target class of a message (source class for replies)
|
||||
* tag: 32 bit tag to be associated with the message
|
||||
* length: 32 bit length of the message / reply
|
||||
* reply_size: 32 bit maximum allowed length of the reply
|
||||
* rmmsg: 8 byte inline message
|
||||
* flags: message properties (IUCV_IPPRTY)
|
||||
*/
|
||||
struct iucv_message {
|
||||
u32 id;
|
||||
u32 audit;
|
||||
u32 class;
|
||||
u32 tag;
|
||||
u32 length;
|
||||
u32 reply_size;
|
||||
u8 rmmsg[8];
|
||||
u8 flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* struct iucv_handler
|
||||
*
|
||||
* A vector of functions that handle IUCV interrupts. Each functions gets
|
||||
* a parameter area as defined by the CP Programming Services and private
|
||||
* pointer that is provided by the user of the interface.
|
||||
*/
|
||||
struct iucv_handler {
|
||||
/*
|
||||
* The path_pending function is called after an iucv interrupt
|
||||
* type 0x01 has been received. The base code allocates a path
|
||||
* structure and "asks" the handler if this path belongs to the
|
||||
* handler. To accept the path the path_pending function needs
|
||||
* to call iucv_path_accept and return 0. If the callback returns
|
||||
* a value != 0 the iucv base code will continue with the next
|
||||
* handler. The order in which the path_pending functions are
|
||||
* called is the order of the registration of the iucv handlers
|
||||
* to the base code.
|
||||
*/
|
||||
int (*path_pending)(struct iucv_path *, u8 ipvmid[8], u8 ipuser[16]);
|
||||
/*
|
||||
* The path_complete function is called after an iucv interrupt
|
||||
* type 0x02 has been received for a path that has been established
|
||||
* for this handler with iucv_path_connect and got accepted by the
|
||||
* peer with iucv_path_accept.
|
||||
*/
|
||||
void (*path_complete)(struct iucv_path *, u8 ipuser[16]);
|
||||
/*
|
||||
* The path_severed function is called after an iucv interrupt
|
||||
* type 0x03 has been received. The communication peer shutdown
|
||||
* his end of the communication path. The path still exists and
|
||||
* remaining messages can be received until a iucv_path_sever
|
||||
* shuts down the other end of the path as well.
|
||||
*/
|
||||
void (*path_severed)(struct iucv_path *, u8 ipuser[16]);
|
||||
/*
|
||||
* The path_quiesced function is called after an icuv interrupt
|
||||
* type 0x04 has been received. The communication peer has quiesced
|
||||
* the path. Delivery of messages is stopped until iucv_path_resume
|
||||
* has been called.
|
||||
*/
|
||||
void (*path_quiesced)(struct iucv_path *, u8 ipuser[16]);
|
||||
/*
|
||||
* The path_resumed function is called after an icuv interrupt
|
||||
* type 0x05 has been received. The communication peer has resumed
|
||||
* the path.
|
||||
*/
|
||||
void (*path_resumed)(struct iucv_path *, u8 ipuser[16]);
|
||||
/*
|
||||
* The message_pending function is called after an icuv interrupt
|
||||
* type 0x06 or type 0x07 has been received. A new message is
|
||||
* availabe and can be received with iucv_message_receive.
|
||||
*/
|
||||
void (*message_pending)(struct iucv_path *, struct iucv_message *);
|
||||
/*
|
||||
* The message_complete function is called after an icuv interrupt
|
||||
* type 0x08 or type 0x09 has been received. A message send with
|
||||
* iucv_message_send2way has been replied to. The reply can be
|
||||
* received with iucv_message_receive.
|
||||
*/
|
||||
void (*message_complete)(struct iucv_path *, struct iucv_message *);
|
||||
|
||||
struct list_head list;
|
||||
struct list_head paths;
|
||||
};
|
||||
|
||||
/**
|
||||
* iucv_register:
|
||||
* @handler: address of iucv handler structure
|
||||
* @smp: != 0 indicates that the handler can deal with out of order messages
|
||||
*
|
||||
* Registers a driver with IUCV.
|
||||
*
|
||||
* Returns 0 on success, -ENOMEM if the memory allocation for the pathid
|
||||
* table failed, or -EIO if IUCV_DECLARE_BUFFER failed on all cpus.
|
||||
*/
|
||||
int iucv_register(struct iucv_handler *handler, int smp);
|
||||
|
||||
/**
|
||||
* iucv_unregister
|
||||
* @handler: address of iucv handler structure
|
||||
* @smp: != 0 indicates that the handler can deal with out of order messages
|
||||
*
|
||||
* Unregister driver from IUCV.
|
||||
*/
|
||||
void iucv_unregister(struct iucv_handler *handle, int smp);
|
||||
|
||||
/**
|
||||
* iucv_path_alloc
|
||||
* @msglim: initial message limit
|
||||
* @flags: initial flags
|
||||
* @gfp: kmalloc allocation flag
|
||||
*
|
||||
* Allocate a new path structure for use with iucv_connect.
|
||||
*
|
||||
* Returns NULL if the memory allocation failed or a pointer to the
|
||||
* path structure.
|
||||
*/
|
||||
static inline struct iucv_path *iucv_path_alloc(u16 msglim, u8 flags, gfp_t gfp)
|
||||
{
|
||||
struct iucv_path *path;
|
||||
|
||||
path = kzalloc(sizeof(struct iucv_path), gfp);
|
||||
if (path) {
|
||||
path->msglim = msglim;
|
||||
path->flags = flags;
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* iucv_path_free
|
||||
* @path: address of iucv path structure
|
||||
*
|
||||
* Frees a path structure.
|
||||
*/
|
||||
static inline void iucv_path_free(struct iucv_path *path)
|
||||
{
|
||||
kfree(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* iucv_path_accept
|
||||
* @path: address of iucv path structure
|
||||
* @handler: address of iucv handler structure
|
||||
* @userdata: 16 bytes of data reflected to the communication partner
|
||||
* @private: private data passed to interrupt handlers for this path
|
||||
*
|
||||
* This function is issued after the user received a connection pending
|
||||
* external interrupt and now wishes to complete the IUCV communication path.
|
||||
*
|
||||
* Returns the result of the CP IUCV call.
|
||||
*/
|
||||
int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler,
|
||||
u8 userdata[16], void *private);
|
||||
|
||||
/**
|
||||
* iucv_path_connect
|
||||
* @path: address of iucv path structure
|
||||
* @handler: address of iucv handler structure
|
||||
* @userid: 8-byte user identification
|
||||
* @system: 8-byte target system identification
|
||||
* @userdata: 16 bytes of data reflected to the communication partner
|
||||
* @private: private data passed to interrupt handlers for this path
|
||||
*
|
||||
* This function establishes an IUCV path. Although the connect may complete
|
||||
* successfully, you are not able to use the path until you receive an IUCV
|
||||
* Connection Complete external interrupt.
|
||||
*
|
||||
* Returns the result of the CP IUCV call.
|
||||
*/
|
||||
int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler,
|
||||
u8 userid[8], u8 system[8], u8 userdata[16],
|
||||
void *private);
|
||||
|
||||
/**
|
||||
* iucv_path_quiesce:
|
||||
* @path: address of iucv path structure
|
||||
* @userdata: 16 bytes of data reflected to the communication partner
|
||||
*
|
||||
* This function temporarily suspends incoming messages on an IUCV path.
|
||||
* You can later reactivate the path by invoking the iucv_resume function.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_path_quiesce(struct iucv_path *path, u8 userdata[16]);
|
||||
|
||||
/**
|
||||
* iucv_path_resume:
|
||||
* @path: address of iucv path structure
|
||||
* @userdata: 16 bytes of data reflected to the communication partner
|
||||
*
|
||||
* This function resumes incoming messages on an IUCV path that has
|
||||
* been stopped with iucv_path_quiesce.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_path_resume(struct iucv_path *path, u8 userdata[16]);
|
||||
|
||||
/**
|
||||
* iucv_path_sever
|
||||
* @path: address of iucv path structure
|
||||
* @userdata: 16 bytes of data reflected to the communication partner
|
||||
*
|
||||
* This function terminates an IUCV path.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_path_sever(struct iucv_path *path, u8 userdata[16]);
|
||||
|
||||
/**
|
||||
* iucv_message_purge
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
* @srccls: source class of message
|
||||
*
|
||||
* Cancels a message you have sent.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg,
|
||||
u32 srccls);
|
||||
|
||||
/**
|
||||
* iucv_message_receive
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
* @flags: flags that affect how the message is received (IUCV_IPBUFLST)
|
||||
* @buffer: address of data buffer or address of struct iucv_array
|
||||
* @size: length of data buffer
|
||||
* @residual:
|
||||
*
|
||||
* This function receives messages that are being sent to you over
|
||||
* established paths. This function will deal with RMDATA messages
|
||||
* embedded in struct iucv_message as well.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
|
||||
u8 flags, void *buffer, size_t size, size_t *residual);
|
||||
|
||||
/**
|
||||
* iucv_message_reject
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
*
|
||||
* The reject function refuses a specified message. Between the time you
|
||||
* are notified of a message and the time that you complete the message,
|
||||
* the message may be rejected.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg);
|
||||
|
||||
/**
|
||||
* iucv_message_reply
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
* @flags: how the reply is sent (IUCV_IPRMDATA, IUCV_IPPRTY, IUCV_IPBUFLST)
|
||||
* @reply: address of data buffer or address of struct iucv_array
|
||||
* @size: length of reply data buffer
|
||||
*
|
||||
* This function responds to the two-way messages that you receive. You
|
||||
* must identify completely the message to which you wish to reply. ie,
|
||||
* pathid, msgid, and trgcls. Prmmsg signifies the data is moved into
|
||||
* the parameter list.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
|
||||
u8 flags, void *reply, size_t size);
|
||||
|
||||
/**
|
||||
* iucv_message_send
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
* @flags: how the message is sent (IUCV_IPRMDATA, IUCV_IPPRTY, IUCV_IPBUFLST)
|
||||
* @srccls: source class of message
|
||||
* @buffer: address of data buffer or address of struct iucv_array
|
||||
* @size: length of send buffer
|
||||
*
|
||||
* This function transmits data to another application. Data to be
|
||||
* transmitted is in a buffer and this is a one-way message and the
|
||||
* receiver will not reply to the message.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
|
||||
u8 flags, u32 srccls, void *buffer, size_t size);
|
||||
|
||||
/**
|
||||
* iucv_message_send2way
|
||||
* @path: address of iucv path structure
|
||||
* @msg: address of iucv msg structure
|
||||
* @flags: how the message is sent and the reply is received
|
||||
* (IUCV_IPRMDATA, IUCV_IPBUFLST, IUCV_IPPRTY, IUCV_ANSLST)
|
||||
* @srccls: source class of message
|
||||
* @buffer: address of data buffer or address of struct iucv_array
|
||||
* @size: length of send buffer
|
||||
* @ansbuf: address of answer buffer or address of struct iucv_array
|
||||
* @asize: size of reply buffer
|
||||
*
|
||||
* This function transmits data to another application. Data to be
|
||||
* transmitted is in a buffer. The receiver of the send is expected to
|
||||
* reply to the message and a buffer is provided into which IUCV moves
|
||||
* the reply to this message.
|
||||
*
|
||||
* Returns the result from the CP IUCV call.
|
||||
*/
|
||||
int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
|
||||
u8 flags, u32 srccls, void *buffer, size_t size,
|
||||
void *answer, size_t asize, size_t *residual);
|
||||
|
|
@ -45,6 +45,7 @@ union nf_conntrack_expect_proto {
|
|||
#include <linux/netfilter/nf_conntrack_ftp.h>
|
||||
#include <linux/netfilter/nf_conntrack_pptp.h>
|
||||
#include <linux/netfilter/nf_conntrack_h323.h>
|
||||
#include <linux/netfilter/nf_conntrack_sane.h>
|
||||
|
||||
/* per conntrack: application helper private data */
|
||||
union nf_conntrack_help {
|
||||
|
|
@ -52,6 +53,7 @@ union nf_conntrack_help {
|
|||
struct nf_ct_ftp_master ct_ftp_info;
|
||||
struct nf_ct_pptp_master ct_pptp_info;
|
||||
struct nf_ct_h323_master ct_h323_info;
|
||||
struct nf_ct_sane_master ct_sane_info;
|
||||
};
|
||||
|
||||
#include <linux/types.h>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ enum nf_nat_manip_type
|
|||
|
||||
#define IP_NAT_RANGE_MAP_IPS 1
|
||||
#define IP_NAT_RANGE_PROTO_SPECIFIED 2
|
||||
#define IP_NAT_RANGE_PROTO_RANDOM 4
|
||||
|
||||
/* NAT sequence number modifications */
|
||||
struct nf_nat_seq {
|
||||
|
|
|
|||
|
|
@ -146,7 +146,8 @@ static inline char rt_tos2priority(u8 tos)
|
|||
|
||||
static inline int ip_route_connect(struct rtable **rp, __be32 dst,
|
||||
__be32 src, u32 tos, int oif, u8 protocol,
|
||||
__be16 sport, __be16 dport, struct sock *sk)
|
||||
__be16 sport, __be16 dport, struct sock *sk,
|
||||
int flags)
|
||||
{
|
||||
struct flowi fl = { .oif = oif,
|
||||
.nl_u = { .ip4_u = { .daddr = dst,
|
||||
|
|
@ -168,7 +169,7 @@ static inline int ip_route_connect(struct rtable **rp, __be32 dst,
|
|||
*rp = NULL;
|
||||
}
|
||||
security_sk_classify_flow(sk, &fl);
|
||||
return ip_route_output_flow(rp, &fl, sk, 0);
|
||||
return ip_route_output_flow(rp, &fl, sk, flags);
|
||||
}
|
||||
|
||||
static inline int ip_route_newports(struct rtable **rp, u8 protocol,
|
||||
|
|
|
|||
|
|
@ -802,9 +802,8 @@ static inline void tcp_update_wl(struct tcp_sock *tp, u32 ack, u32 seq)
|
|||
/*
|
||||
* Calculate(/check) TCP checksum
|
||||
*/
|
||||
static inline __sum16 tcp_v4_check(struct tcphdr *th, int len,
|
||||
__be32 saddr, __be32 daddr,
|
||||
__wsum base)
|
||||
static inline __sum16 tcp_v4_check(int len, __be32 saddr,
|
||||
__be32 daddr, __wsum base)
|
||||
{
|
||||
return csum_tcpudp_magic(saddr,daddr,len,IPPROTO_TCP,base);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,6 +161,14 @@ struct x25_sock {
|
|||
unsigned long vc_facil_mask; /* inc_call facilities mask */
|
||||
};
|
||||
|
||||
struct x25_forward {
|
||||
struct list_head node;
|
||||
unsigned int lci;
|
||||
struct net_device *dev1;
|
||||
struct net_device *dev2;
|
||||
atomic_t refcnt;
|
||||
};
|
||||
|
||||
static inline struct x25_sock *x25_sk(const struct sock *sk)
|
||||
{
|
||||
return (struct x25_sock *)sk;
|
||||
|
|
@ -172,6 +180,7 @@ extern int sysctl_x25_call_request_timeout;
|
|||
extern int sysctl_x25_reset_request_timeout;
|
||||
extern int sysctl_x25_clear_request_timeout;
|
||||
extern int sysctl_x25_ack_holdback_timeout;
|
||||
extern int sysctl_x25_forward;
|
||||
|
||||
extern int x25_addr_ntoa(unsigned char *, struct x25_address *,
|
||||
struct x25_address *);
|
||||
|
|
@ -198,6 +207,13 @@ extern int x25_negotiate_facilities(struct sk_buff *, struct sock *,
|
|||
struct x25_dte_facilities *);
|
||||
extern void x25_limit_facilities(struct x25_facilities *, struct x25_neigh *);
|
||||
|
||||
/* x25_forward.c */
|
||||
extern void x25_clear_forward_by_lci(unsigned int lci);
|
||||
extern void x25_clear_forward_by_dev(struct net_device *);
|
||||
extern int x25_forward_data(int, struct x25_neigh *, struct sk_buff *);
|
||||
extern int x25_forward_call(struct x25_address *, struct x25_neigh *,
|
||||
struct sk_buff *, int);
|
||||
|
||||
/* x25_in.c */
|
||||
extern int x25_process_rx_frame(struct sock *, struct sk_buff *);
|
||||
extern int x25_backlog_rcv(struct sock *, struct sk_buff *);
|
||||
|
|
@ -282,6 +298,8 @@ extern struct hlist_head x25_list;
|
|||
extern rwlock_t x25_list_lock;
|
||||
extern struct list_head x25_route_list;
|
||||
extern rwlock_t x25_route_list_lock;
|
||||
extern struct list_head x25_forward_list;
|
||||
extern rwlock_t x25_forward_list_lock;
|
||||
|
||||
extern int x25_proc_init(void);
|
||||
extern void x25_proc_exit(void);
|
||||
|
|
|
|||
|
|
@ -252,10 +252,13 @@ struct xfrm_state_afinfo {
|
|||
xfrm_address_t *daddr, xfrm_address_t *saddr);
|
||||
int (*tmpl_sort)(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n);
|
||||
int (*state_sort)(struct xfrm_state **dst, struct xfrm_state **src, int n);
|
||||
int (*output)(struct sk_buff *skb);
|
||||
};
|
||||
|
||||
extern int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo);
|
||||
extern int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo);
|
||||
extern struct xfrm_state_afinfo *xfrm_state_get_afinfo(unsigned short family);
|
||||
extern void xfrm_state_put_afinfo(struct xfrm_state_afinfo *afinfo);
|
||||
|
||||
extern void xfrm_state_delete_tunnel(struct xfrm_state *x);
|
||||
|
||||
|
|
@ -359,6 +362,19 @@ struct xfrm_policy
|
|||
struct xfrm_tmpl xfrm_vec[XFRM_MAX_DEPTH];
|
||||
};
|
||||
|
||||
struct xfrm_migrate {
|
||||
xfrm_address_t old_daddr;
|
||||
xfrm_address_t old_saddr;
|
||||
xfrm_address_t new_daddr;
|
||||
xfrm_address_t new_saddr;
|
||||
u8 proto;
|
||||
u8 mode;
|
||||
u16 reserved;
|
||||
u32 reqid;
|
||||
u16 old_family;
|
||||
u16 new_family;
|
||||
};
|
||||
|
||||
#define XFRM_KM_TIMEOUT 30
|
||||
/* which seqno */
|
||||
#define XFRM_REPLAY_SEQ 1
|
||||
|
|
@ -385,6 +401,7 @@ struct xfrm_mgr
|
|||
int (*new_mapping)(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sport);
|
||||
int (*notify_policy)(struct xfrm_policy *x, int dir, struct km_event *c);
|
||||
int (*report)(u8 proto, struct xfrm_selector *sel, xfrm_address_t *addr);
|
||||
int (*migrate)(struct xfrm_selector *sel, u8 dir, u8 type, struct xfrm_migrate *m, int num_bundles);
|
||||
};
|
||||
|
||||
extern int xfrm_register_km(struct xfrm_mgr *km);
|
||||
|
|
@ -985,6 +1002,16 @@ extern int xfrm_bundle_ok(struct xfrm_policy *pol, struct xfrm_dst *xdst,
|
|||
struct flowi *fl, int family, int strict);
|
||||
extern void xfrm_init_pmtu(struct dst_entry *dst);
|
||||
|
||||
#ifdef CONFIG_XFRM_MIGRATE
|
||||
extern int km_migrate(struct xfrm_selector *sel, u8 dir, u8 type,
|
||||
struct xfrm_migrate *m, int num_bundles);
|
||||
extern struct xfrm_state * xfrm_migrate_state_find(struct xfrm_migrate *m);
|
||||
extern struct xfrm_state * xfrm_state_migrate(struct xfrm_state *x,
|
||||
struct xfrm_migrate *m);
|
||||
extern int xfrm_migrate(struct xfrm_selector *sel, u8 dir, u8 type,
|
||||
struct xfrm_migrate *m, int num_bundles);
|
||||
#endif
|
||||
|
||||
extern wait_queue_head_t km_waitq;
|
||||
extern int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sport);
|
||||
extern void km_policy_expired(struct xfrm_policy *pol, int dir, int hard, u32 pid);
|
||||
|
|
@ -1050,5 +1077,25 @@ static inline void xfrm_aevent_doreplay(struct xfrm_state *x)
|
|||
xfrm_replay_notify(x, XFRM_REPLAY_UPDATE);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_XFRM_MIGRATE
|
||||
static inline struct xfrm_algo *xfrm_algo_clone(struct xfrm_algo *orig)
|
||||
{
|
||||
return (struct xfrm_algo *)kmemdup(orig, sizeof(*orig) + orig->alg_key_len, GFP_KERNEL);
|
||||
}
|
||||
|
||||
static inline void xfrm_states_put(struct xfrm_state **states, int n)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < n; i++)
|
||||
xfrm_state_put(*(states + i));
|
||||
}
|
||||
|
||||
static inline void xfrm_states_delete(struct xfrm_state **states, int n)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < n; i++)
|
||||
xfrm_state_delete(*(states + i));
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NET_XFRM_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue