Merge branch 'upstream'
This commit is contained in:
@@ -45,6 +45,7 @@ extern unsigned long __init bootmem_bootmap_pages (unsigned long);
|
||||
extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
|
||||
extern void __init free_bootmem (unsigned long addr, unsigned long size);
|
||||
extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_nopanic (unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
|
@@ -21,7 +21,7 @@ enum dma_data_direction {
|
||||
#define DMA_30BIT_MASK 0x000000003fffffffULL
|
||||
#define DMA_29BIT_MASK 0x000000001fffffffULL
|
||||
#define DMA_28BIT_MASK 0x000000000fffffffULL
|
||||
#define DMA_24BIT_MASK 0x0000000000ffffffULL
|
||||
#define DMA_24BIT_MASK 0x0000000000ffffffULL
|
||||
|
||||
#include <asm/dma-mapping.h>
|
||||
|
||||
|
@@ -762,7 +762,7 @@ extern int fcntl_getlease(struct file *filp);
|
||||
#define SYNC_FILE_RANGE_WRITE 2
|
||||
#define SYNC_FILE_RANGE_WAIT_AFTER 4
|
||||
extern int do_sync_file_range(struct file *file, loff_t offset, loff_t endbyte,
|
||||
int flags);
|
||||
unsigned int flags);
|
||||
|
||||
/* fs/locks.c */
|
||||
extern void locks_init_lock(struct file_lock *);
|
||||
@@ -1039,8 +1039,8 @@ struct file_operations {
|
||||
int (*check_flags)(int);
|
||||
int (*dir_notify)(struct file *filp, unsigned long arg);
|
||||
int (*flock) (struct file *, int, struct file_lock *);
|
||||
ssize_t (*splice_write)(struct inode *, struct file *, size_t, unsigned int);
|
||||
ssize_t (*splice_read)(struct file *, struct inode *, size_t, unsigned int);
|
||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int);
|
||||
ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int);
|
||||
};
|
||||
|
||||
struct inode_operations {
|
||||
@@ -1611,8 +1611,17 @@ extern ssize_t generic_file_sendfile(struct file *, loff_t *, size_t, read_actor
|
||||
extern void do_generic_mapping_read(struct address_space *mapping,
|
||||
struct file_ra_state *, struct file *,
|
||||
loff_t *, read_descriptor_t *, read_actor_t);
|
||||
extern ssize_t generic_file_splice_read(struct file *, struct inode *, size_t, unsigned int);
|
||||
extern ssize_t generic_file_splice_write(struct inode *, struct file *, size_t, unsigned int);
|
||||
|
||||
/* fs/splice.c */
|
||||
extern ssize_t generic_file_splice_read(struct file *,
|
||||
struct pipe_inode_info *, size_t, unsigned int);
|
||||
extern ssize_t generic_file_splice_write(struct pipe_inode_info *,
|
||||
struct file *, size_t, unsigned int);
|
||||
extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
|
||||
struct file *out, size_t len, unsigned int flags);
|
||||
extern long do_splice_direct(struct file *in, struct file *out,
|
||||
size_t len, unsigned int flags);
|
||||
|
||||
extern void
|
||||
file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
|
||||
extern ssize_t generic_file_readv(struct file *filp, const struct iovec *iov,
|
||||
|
@@ -57,6 +57,8 @@ struct vm_area_struct;
|
||||
__GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP| \
|
||||
__GFP_NOMEMALLOC|__GFP_HARDWALL)
|
||||
|
||||
/* This equals 0, but use constants in case they ever change */
|
||||
#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
|
||||
/* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
|
||||
#define GFP_ATOMIC (__GFP_HIGH)
|
||||
#define GFP_NOIO (__GFP_WAIT)
|
||||
|
@@ -245,7 +245,8 @@ void __init parse_early_param(void);
|
||||
#define __cpuexitdata __exitdata
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
#if defined(CONFIG_MEMORY_HOTPLUG) || defined(CONFIG_ACPI_HOTPLUG_MEMORY) \
|
||||
|| defined(CONFIG_ACPI_HOTPLUG_MEMORY_MODULE)
|
||||
#define __meminit
|
||||
#define __meminitdata
|
||||
#define __memexit
|
||||
|
@@ -36,6 +36,8 @@
|
||||
/* LATCH is used in the interval timer and ftape setup. */
|
||||
#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
|
||||
|
||||
#define LATCH_HPET ((HPET_TICK_RATE + HZ/2) / HZ)
|
||||
|
||||
/* Suppose we want to devide two numbers NOM and DEN: NOM/DEN, the we can
|
||||
* improve accuracy by shifting LSH bits, hence calculating:
|
||||
* (NOM << LSH) / DEN
|
||||
@@ -51,9 +53,13 @@
|
||||
/* HZ is the requested value. ACTHZ is actual HZ ("<< 8" is for accuracy) */
|
||||
#define ACTHZ (SH_DIV (CLOCK_TICK_RATE, LATCH, 8))
|
||||
|
||||
#define ACTHZ_HPET (SH_DIV (HPET_TICK_RATE, LATCH_HPET, 8))
|
||||
|
||||
/* TICK_NSEC is the time between ticks in nsec assuming real ACTHZ */
|
||||
#define TICK_NSEC (SH_DIV (1000000UL * 1000, ACTHZ, 8))
|
||||
|
||||
#define TICK_NSEC_HPET (SH_DIV(1000000UL * 1000, ACTHZ_HPET, 8))
|
||||
|
||||
/* TICK_USEC is the time between ticks in usec assuming fake USER_HZ */
|
||||
#define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ)
|
||||
|
||||
|
@@ -176,7 +176,7 @@ static inline void console_verbose(void)
|
||||
|
||||
extern void bust_spinlocks(int yes);
|
||||
extern int oops_in_progress; /* If set, an oops, panic(), BUG() or die() is in progress */
|
||||
extern __deprecated_for_modules int panic_timeout;
|
||||
extern int panic_timeout;
|
||||
extern int panic_on_oops;
|
||||
extern int tainted;
|
||||
extern const char *print_tainted(void);
|
||||
|
@@ -19,39 +19,38 @@ struct class_device;
|
||||
*/
|
||||
|
||||
enum led_brightness {
|
||||
LED_OFF = 0,
|
||||
LED_HALF = 127,
|
||||
LED_FULL = 255,
|
||||
LED_OFF = 0,
|
||||
LED_HALF = 127,
|
||||
LED_FULL = 255,
|
||||
};
|
||||
|
||||
struct led_classdev {
|
||||
const char *name;
|
||||
int brightness;
|
||||
int flags;
|
||||
#define LED_SUSPENDED (1 << 0)
|
||||
const char *name;
|
||||
int brightness;
|
||||
int flags;
|
||||
|
||||
/* A function to set the brightness of the led */
|
||||
void (*brightness_set)(struct led_classdev *led_cdev,
|
||||
enum led_brightness brightness);
|
||||
#define LED_SUSPENDED (1 << 0)
|
||||
|
||||
struct class_device *class_dev;
|
||||
/* LED Device linked list */
|
||||
struct list_head node;
|
||||
/* Set LED brightness level */
|
||||
void (*brightness_set)(struct led_classdev *led_cdev,
|
||||
enum led_brightness brightness);
|
||||
|
||||
struct class_device *class_dev;
|
||||
struct list_head node; /* LED Device list */
|
||||
char *default_trigger; /* Trigger to use */
|
||||
|
||||
/* Trigger data */
|
||||
char *default_trigger;
|
||||
#ifdef CONFIG_LEDS_TRIGGERS
|
||||
rwlock_t trigger_lock;
|
||||
/* Protects the trigger data below */
|
||||
rwlock_t trigger_lock;
|
||||
|
||||
struct led_trigger *trigger;
|
||||
struct list_head trig_list;
|
||||
void *trigger_data;
|
||||
struct led_trigger *trigger;
|
||||
struct list_head trig_list;
|
||||
void *trigger_data;
|
||||
#endif
|
||||
};
|
||||
|
||||
extern int led_classdev_register(struct device *parent,
|
||||
struct led_classdev *led_cdev);
|
||||
struct led_classdev *led_cdev);
|
||||
extern void led_classdev_unregister(struct led_classdev *led_cdev);
|
||||
extern void led_classdev_suspend(struct led_classdev *led_cdev);
|
||||
extern void led_classdev_resume(struct led_classdev *led_cdev);
|
||||
@@ -65,16 +64,16 @@ extern void led_classdev_resume(struct led_classdev *led_cdev);
|
||||
|
||||
struct led_trigger {
|
||||
/* Trigger Properties */
|
||||
const char *name;
|
||||
void (*activate)(struct led_classdev *led_cdev);
|
||||
void (*deactivate)(struct led_classdev *led_cdev);
|
||||
const char *name;
|
||||
void (*activate)(struct led_classdev *led_cdev);
|
||||
void (*deactivate)(struct led_classdev *led_cdev);
|
||||
|
||||
/* LEDs under control by this trigger (for simple triggers) */
|
||||
rwlock_t leddev_list_lock;
|
||||
struct list_head led_cdevs;
|
||||
rwlock_t leddev_list_lock;
|
||||
struct list_head led_cdevs;
|
||||
|
||||
/* Link to next registered trigger */
|
||||
struct list_head next_trig;
|
||||
struct list_head next_trig;
|
||||
};
|
||||
|
||||
/* Registration functions for complex triggers */
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <linux/ata.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
|
||||
/*
|
||||
* compile-time options: to be removed as soon as all the drivers are
|
||||
@@ -248,7 +249,7 @@ struct ata_queued_cmd;
|
||||
/* typedefs */
|
||||
typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
|
||||
typedef void (*ata_probeinit_fn_t)(struct ata_port *);
|
||||
typedef int (*ata_reset_fn_t)(struct ata_port *, int, unsigned int *);
|
||||
typedef int (*ata_reset_fn_t)(struct ata_port *, unsigned int *);
|
||||
typedef void (*ata_postreset_fn_t)(struct ata_port *ap, unsigned int *);
|
||||
|
||||
struct ata_ioports {
|
||||
@@ -499,15 +500,14 @@ extern void ata_port_probe(struct ata_port *);
|
||||
extern void __sata_phy_reset(struct ata_port *ap);
|
||||
extern void sata_phy_reset(struct ata_port *ap);
|
||||
extern void ata_bus_reset(struct ata_port *ap);
|
||||
extern int ata_set_sata_spd(struct ata_port *ap);
|
||||
extern int ata_drive_probe_reset(struct ata_port *ap,
|
||||
ata_probeinit_fn_t probeinit,
|
||||
ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
|
||||
ata_postreset_fn_t postreset, unsigned int *classes);
|
||||
extern void ata_std_probeinit(struct ata_port *ap);
|
||||
extern int ata_std_softreset(struct ata_port *ap, int verbose,
|
||||
unsigned int *classes);
|
||||
extern int sata_std_hardreset(struct ata_port *ap, int verbose,
|
||||
unsigned int *class);
|
||||
extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes);
|
||||
extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class);
|
||||
extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes);
|
||||
extern int ata_dev_revalidate(struct ata_port *ap, struct ata_device *dev,
|
||||
int post_reset);
|
||||
@@ -526,6 +526,8 @@ extern void ata_host_set_remove(struct ata_host_set *host_set);
|
||||
extern int ata_scsi_detect(struct scsi_host_template *sht);
|
||||
extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
|
||||
extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
|
||||
extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
|
||||
extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
|
||||
extern int ata_scsi_release(struct Scsi_Host *host);
|
||||
extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc);
|
||||
extern int ata_scsi_device_resume(struct scsi_device *);
|
||||
@@ -538,6 +540,9 @@ extern unsigned int ata_busy_sleep(struct ata_port *ap,
|
||||
unsigned long timeout);
|
||||
extern void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *),
|
||||
void *data, unsigned long delay);
|
||||
extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
|
||||
unsigned long interval_msec,
|
||||
unsigned long timeout_msec);
|
||||
|
||||
/*
|
||||
* Default driver ops implementations
|
||||
@@ -631,7 +636,6 @@ extern unsigned long ata_pci_default_filter(const struct ata_port *, struct ata_
|
||||
/*
|
||||
* EH
|
||||
*/
|
||||
extern int ata_scsi_error(struct Scsi_Host *host);
|
||||
extern void ata_eng_timeout(struct ata_port *ap);
|
||||
extern void ata_eh_qc_complete(struct ata_queued_cmd *qc);
|
||||
extern void ata_eh_qc_retry(struct ata_queued_cmd *qc);
|
||||
@@ -972,4 +976,9 @@ static inline void ata_pad_free(struct ata_port *ap, struct device *dev)
|
||||
dma_free_coherent(dev, ATA_DMA_PAD_BUF_SZ, ap->pad, ap->pad_dma);
|
||||
}
|
||||
|
||||
static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host)
|
||||
{
|
||||
return (struct ata_port *) &host->hostdata[0];
|
||||
}
|
||||
|
||||
#endif /* __LINUX_LIBATA_H__ */
|
||||
|
@@ -58,8 +58,6 @@ extern int add_one_highpage(struct page *page, int pfn, int bad_ppro);
|
||||
/* need some defines for these for archs that don't support it */
|
||||
extern void online_page(struct page *page);
|
||||
/* VM interface that may be used by firmware interface */
|
||||
extern int add_memory(u64 start, u64 size);
|
||||
extern int remove_memory(u64 start, u64 size);
|
||||
extern int online_pages(unsigned long, unsigned long);
|
||||
|
||||
/* reasonably generic interface to expand the physical pages in a zone */
|
||||
@@ -92,11 +90,6 @@ static inline int mhp_notimplemented(const char *func)
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int __add_pages(struct zone *zone, unsigned long start_pfn,
|
||||
unsigned long nr_pages)
|
||||
{
|
||||
return mhp_notimplemented(__FUNCTION__);
|
||||
}
|
||||
#endif /* ! CONFIG_MEMORY_HOTPLUG */
|
||||
static inline int __remove_pages(struct zone *zone, unsigned long start_pfn,
|
||||
unsigned long nr_pages)
|
||||
@@ -105,4 +98,11 @@ static inline int __remove_pages(struct zone *zone, unsigned long start_pfn,
|
||||
dump_stack();
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MEMORY_HOTPLUG) || defined(CONFIG_ACPI_HOTPLUG_MEMORY) \
|
||||
|| defined(CONFIG_ACPI_HOTPLUG_MEMORY_MODULE)
|
||||
extern int add_memory(u64 start, u64 size);
|
||||
extern int remove_memory(u64 start, u64 size);
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_MEMORY_HOTPLUG_H */
|
||||
|
@@ -229,10 +229,9 @@ struct page {
|
||||
unsigned long private; /* Mapping-private opaque data:
|
||||
* usually used for buffer_heads
|
||||
* if PagePrivate set; used for
|
||||
* swp_entry_t if PageSwapCache.
|
||||
* When page is free, this
|
||||
* swp_entry_t if PageSwapCache;
|
||||
* indicates order in the buddy
|
||||
* system.
|
||||
* system if PG_buddy is set.
|
||||
*/
|
||||
struct address_space *mapping; /* If low bit clear, points to
|
||||
* inode address_space, or NULL.
|
||||
|
@@ -110,6 +110,8 @@ struct nf_info
|
||||
/* Function to register/unregister hook points. */
|
||||
int nf_register_hook(struct nf_hook_ops *reg);
|
||||
void nf_unregister_hook(struct nf_hook_ops *reg);
|
||||
int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n);
|
||||
void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n);
|
||||
|
||||
/* Functions to register get/setsockopt ranges (non-inclusive). You
|
||||
need to check permissions yourself! */
|
||||
@@ -281,16 +283,42 @@ extern void nf_invalidate_cache(int pf);
|
||||
Returns true or false. */
|
||||
extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len);
|
||||
|
||||
struct nf_queue_rerouter {
|
||||
void (*save)(const struct sk_buff *skb, struct nf_info *info);
|
||||
int (*reroute)(struct sk_buff **skb, const struct nf_info *info);
|
||||
int rer_size;
|
||||
struct nf_afinfo {
|
||||
unsigned short family;
|
||||
unsigned int (*checksum)(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
void (*saveroute)(const struct sk_buff *skb,
|
||||
struct nf_info *info);
|
||||
int (*reroute)(struct sk_buff **skb,
|
||||
const struct nf_info *info);
|
||||
int route_key_size;
|
||||
};
|
||||
|
||||
#define nf_info_reroute(x) ((void *)x + sizeof(struct nf_info))
|
||||
extern struct nf_afinfo *nf_afinfo[];
|
||||
static inline struct nf_afinfo *nf_get_afinfo(unsigned short family)
|
||||
{
|
||||
return rcu_dereference(nf_afinfo[family]);
|
||||
}
|
||||
|
||||
extern int nf_register_queue_rerouter(int pf, struct nf_queue_rerouter *rer);
|
||||
extern int nf_unregister_queue_rerouter(int pf);
|
||||
static inline unsigned int
|
||||
nf_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff,
|
||||
u_int8_t protocol, unsigned short family)
|
||||
{
|
||||
struct nf_afinfo *afinfo;
|
||||
unsigned int csum = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
afinfo = nf_get_afinfo(family);
|
||||
if (afinfo)
|
||||
csum = afinfo->checksum(skb, hook, dataoff, protocol);
|
||||
rcu_read_unlock();
|
||||
return csum;
|
||||
}
|
||||
|
||||
extern int nf_register_afinfo(struct nf_afinfo *afinfo);
|
||||
extern void nf_unregister_afinfo(struct nf_afinfo *afinfo);
|
||||
|
||||
#define nf_info_reroute(x) ((void *)x + sizeof(struct nf_info))
|
||||
|
||||
#include <net/flow.h>
|
||||
extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *);
|
||||
|
@@ -80,6 +80,8 @@ enum nf_ip_hook_priorities {
|
||||
#ifdef __KERNEL__
|
||||
extern int ip_route_me_harder(struct sk_buff **pskb);
|
||||
extern int ip_xfrm_me_harder(struct sk_buff **pskb);
|
||||
extern unsigned int nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
#endif /*__KERNEL__*/
|
||||
|
||||
#endif /*__LINUX_IP_NETFILTER_H*/
|
||||
|
@@ -3,6 +3,8 @@
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
|
||||
|
||||
#define RAS_PORT 1719
|
||||
#define Q931_PORT 1720
|
||||
#define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */
|
||||
@@ -25,6 +27,56 @@ struct ip_ct_h323_master {
|
||||
};
|
||||
};
|
||||
|
||||
struct ip_conntrack_expect;
|
||||
|
||||
extern int get_h225_addr(unsigned char *data, TransportAddress * addr,
|
||||
u_int32_t * ip, u_int16_t * port);
|
||||
extern void ip_conntrack_h245_expect(struct ip_conntrack *new,
|
||||
struct ip_conntrack_expect *this);
|
||||
extern void ip_conntrack_q931_expect(struct ip_conntrack *new,
|
||||
struct ip_conntrack_expect *this);
|
||||
extern int (*set_h245_addr_hook) (struct sk_buff ** pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress * addr,
|
||||
u_int32_t ip, u_int16_t port);
|
||||
extern int (*set_h225_addr_hook) (struct sk_buff ** pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress * addr,
|
||||
u_int32_t ip, u_int16_t port);
|
||||
extern int (*set_sig_addr_hook) (struct sk_buff ** pskb,
|
||||
struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress * addr, int count);
|
||||
extern int (*set_ras_addr_hook) (struct sk_buff ** pskb,
|
||||
struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress * addr, int count);
|
||||
extern int (*nat_rtp_rtcp_hook) (struct sk_buff ** pskb,
|
||||
struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress * addr,
|
||||
u_int16_t port, u_int16_t rtp_port,
|
||||
struct ip_conntrack_expect * rtp_exp,
|
||||
struct ip_conntrack_expect * rtcp_exp);
|
||||
extern int (*nat_t120_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress * addr, u_int16_t port,
|
||||
struct ip_conntrack_expect * exp);
|
||||
extern int (*nat_h245_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress * addr, u_int16_t port,
|
||||
struct ip_conntrack_expect * exp);
|
||||
extern int (*nat_q931_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, TransportAddress * addr,
|
||||
int idx, u_int16_t port,
|
||||
struct ip_conntrack_expect * exp);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
98
include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
Normal file
98
include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/****************************************************************************
|
||||
* ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
|
||||
*
|
||||
* This source code is licensed under General Public License version 2.
|
||||
*
|
||||
*
|
||||
* This library is based on H.225 version 4, H.235 version 2 and H.245
|
||||
* version 7. It is extremely optimized to decode only the absolutely
|
||||
* necessary objects in a signal for Linux kernel NAT module use, so don't
|
||||
* expect it to be a full ASN.1 library.
|
||||
*
|
||||
* Features:
|
||||
*
|
||||
* 1. Small. The total size of code plus data is less than 20 KB (IA32).
|
||||
* 2. Fast. Decoding Netmeeting's Setup signal 1 million times on a PIII 866
|
||||
* takes only 3.9 seconds.
|
||||
* 3. No memory allocation. It uses a static object. No need to initialize or
|
||||
* cleanup.
|
||||
* 4. Thread safe.
|
||||
* 5. Support embedded architectures that has no misaligned memory access
|
||||
* support.
|
||||
*
|
||||
* Limitations:
|
||||
*
|
||||
* 1. At most 30 faststart entries. Actually this is limited by ethernet's MTU.
|
||||
* If a Setup signal contains more than 30 faststart, the packet size will
|
||||
* very likely exceed the MTU size, then the TPKT will be fragmented. I
|
||||
* don't know how to handle this in a Netfilter module. Anybody can help?
|
||||
* Although I think 30 is enough for most of the cases.
|
||||
* 2. IPv4 addresses only.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
|
||||
/*****************************************************************************
|
||||
* H.323 Types
|
||||
****************************************************************************/
|
||||
#include "ip_conntrack_helper_h323_types.h"
|
||||
|
||||
typedef struct {
|
||||
enum {
|
||||
Q931_NationalEscape = 0x00,
|
||||
Q931_Alerting = 0x01,
|
||||
Q931_CallProceeding = 0x02,
|
||||
Q931_Connect = 0x07,
|
||||
Q931_ConnectAck = 0x0F,
|
||||
Q931_Progress = 0x03,
|
||||
Q931_Setup = 0x05,
|
||||
Q931_SetupAck = 0x0D,
|
||||
Q931_Resume = 0x26,
|
||||
Q931_ResumeAck = 0x2E,
|
||||
Q931_ResumeReject = 0x22,
|
||||
Q931_Suspend = 0x25,
|
||||
Q931_SuspendAck = 0x2D,
|
||||
Q931_SuspendReject = 0x21,
|
||||
Q931_UserInformation = 0x20,
|
||||
Q931_Disconnect = 0x45,
|
||||
Q931_Release = 0x4D,
|
||||
Q931_ReleaseComplete = 0x5A,
|
||||
Q931_Restart = 0x46,
|
||||
Q931_RestartAck = 0x4E,
|
||||
Q931_Segment = 0x60,
|
||||
Q931_CongestionCtrl = 0x79,
|
||||
Q931_Information = 0x7B,
|
||||
Q931_Notify = 0x6E,
|
||||
Q931_Status = 0x7D,
|
||||
Q931_StatusEnquiry = 0x75,
|
||||
Q931_Facility = 0x62
|
||||
} MessageType;
|
||||
H323_UserInformation UUIE;
|
||||
} Q931;
|
||||
|
||||
/*****************************************************************************
|
||||
* Decode Functions Return Codes
|
||||
****************************************************************************/
|
||||
|
||||
#define H323_ERROR_NONE 0 /* Decoded successfully */
|
||||
#define H323_ERROR_STOP 1 /* Decoding stopped, not really an error */
|
||||
#define H323_ERROR_BOUND -1
|
||||
#define H323_ERROR_RANGE -2
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Decode Functions
|
||||
****************************************************************************/
|
||||
|
||||
int DecodeRasMessage(unsigned char *buf, size_t sz, RasMessage * ras);
|
||||
int DecodeQ931(unsigned char *buf, size_t sz, Q931 * q931);
|
||||
int DecodeMultimediaSystemControlMessage(unsigned char *buf, size_t sz,
|
||||
MultimediaSystemControlMessage *
|
||||
mscm);
|
||||
|
||||
#endif
|
938
include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
Normal file
938
include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
Normal file
@@ -0,0 +1,938 @@
|
||||
/* Generated by Jing Min Zhao's ASN.1 parser, Mar 15 2006
|
||||
*
|
||||
* Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
* This source code is licensed under General Public License version 2.
|
||||
*/
|
||||
|
||||
typedef struct TransportAddress_ipAddress { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned ip;
|
||||
} TransportAddress_ipAddress;
|
||||
|
||||
typedef struct TransportAddress { /* CHOICE */
|
||||
enum {
|
||||
eTransportAddress_ipAddress,
|
||||
eTransportAddress_ipSourceRoute,
|
||||
eTransportAddress_ipxAddress,
|
||||
eTransportAddress_ip6Address,
|
||||
eTransportAddress_netBios,
|
||||
eTransportAddress_nsap,
|
||||
eTransportAddress_nonStandardAddress,
|
||||
} choice;
|
||||
union {
|
||||
TransportAddress_ipAddress ipAddress;
|
||||
};
|
||||
} TransportAddress;
|
||||
|
||||
typedef struct DataProtocolCapability { /* CHOICE */
|
||||
enum {
|
||||
eDataProtocolCapability_nonStandard,
|
||||
eDataProtocolCapability_v14buffered,
|
||||
eDataProtocolCapability_v42lapm,
|
||||
eDataProtocolCapability_hdlcFrameTunnelling,
|
||||
eDataProtocolCapability_h310SeparateVCStack,
|
||||
eDataProtocolCapability_h310SingleVCStack,
|
||||
eDataProtocolCapability_transparent,
|
||||
eDataProtocolCapability_segmentationAndReassembly,
|
||||
eDataProtocolCapability_hdlcFrameTunnelingwSAR,
|
||||
eDataProtocolCapability_v120,
|
||||
eDataProtocolCapability_separateLANStack,
|
||||
eDataProtocolCapability_v76wCompression,
|
||||
eDataProtocolCapability_tcp,
|
||||
eDataProtocolCapability_udp,
|
||||
} choice;
|
||||
} DataProtocolCapability;
|
||||
|
||||
typedef struct DataApplicationCapability_application { /* CHOICE */
|
||||
enum {
|
||||
eDataApplicationCapability_application_nonStandard,
|
||||
eDataApplicationCapability_application_t120,
|
||||
eDataApplicationCapability_application_dsm_cc,
|
||||
eDataApplicationCapability_application_userData,
|
||||
eDataApplicationCapability_application_t84,
|
||||
eDataApplicationCapability_application_t434,
|
||||
eDataApplicationCapability_application_h224,
|
||||
eDataApplicationCapability_application_nlpid,
|
||||
eDataApplicationCapability_application_dsvdControl,
|
||||
eDataApplicationCapability_application_h222DataPartitioning,
|
||||
eDataApplicationCapability_application_t30fax,
|
||||
eDataApplicationCapability_application_t140,
|
||||
eDataApplicationCapability_application_t38fax,
|
||||
eDataApplicationCapability_application_genericDataCapability,
|
||||
} choice;
|
||||
union {
|
||||
DataProtocolCapability t120;
|
||||
};
|
||||
} DataApplicationCapability_application;
|
||||
|
||||
typedef struct DataApplicationCapability { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
DataApplicationCapability_application application;
|
||||
} DataApplicationCapability;
|
||||
|
||||
typedef struct DataType { /* CHOICE */
|
||||
enum {
|
||||
eDataType_nonStandard,
|
||||
eDataType_nullData,
|
||||
eDataType_videoData,
|
||||
eDataType_audioData,
|
||||
eDataType_data,
|
||||
eDataType_encryptionData,
|
||||
eDataType_h235Control,
|
||||
eDataType_h235Media,
|
||||
eDataType_multiplexedStream,
|
||||
} choice;
|
||||
union {
|
||||
DataApplicationCapability data;
|
||||
};
|
||||
} DataType;
|
||||
|
||||
typedef struct UnicastAddress_iPAddress { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned network;
|
||||
} UnicastAddress_iPAddress;
|
||||
|
||||
typedef struct UnicastAddress { /* CHOICE */
|
||||
enum {
|
||||
eUnicastAddress_iPAddress,
|
||||
eUnicastAddress_iPXAddress,
|
||||
eUnicastAddress_iP6Address,
|
||||
eUnicastAddress_netBios,
|
||||
eUnicastAddress_iPSourceRouteAddress,
|
||||
eUnicastAddress_nsap,
|
||||
eUnicastAddress_nonStandardAddress,
|
||||
} choice;
|
||||
union {
|
||||
UnicastAddress_iPAddress iPAddress;
|
||||
};
|
||||
} UnicastAddress;
|
||||
|
||||
typedef struct H245_TransportAddress { /* CHOICE */
|
||||
enum {
|
||||
eH245_TransportAddress_unicastAddress,
|
||||
eH245_TransportAddress_multicastAddress,
|
||||
} choice;
|
||||
union {
|
||||
UnicastAddress unicastAddress;
|
||||
};
|
||||
} H245_TransportAddress;
|
||||
|
||||
typedef struct H2250LogicalChannelParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eH2250LogicalChannelParameters_nonStandard = (1 << 31),
|
||||
eH2250LogicalChannelParameters_associatedSessionID =
|
||||
(1 << 30),
|
||||
eH2250LogicalChannelParameters_mediaChannel = (1 << 29),
|
||||
eH2250LogicalChannelParameters_mediaGuaranteedDelivery =
|
||||
(1 << 28),
|
||||
eH2250LogicalChannelParameters_mediaControlChannel =
|
||||
(1 << 27),
|
||||
eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery
|
||||
= (1 << 26),
|
||||
eH2250LogicalChannelParameters_silenceSuppression = (1 << 25),
|
||||
eH2250LogicalChannelParameters_destination = (1 << 24),
|
||||
eH2250LogicalChannelParameters_dynamicRTPPayloadType =
|
||||
(1 << 23),
|
||||
eH2250LogicalChannelParameters_mediaPacketization = (1 << 22),
|
||||
eH2250LogicalChannelParameters_transportCapability =
|
||||
(1 << 21),
|
||||
eH2250LogicalChannelParameters_redundancyEncoding = (1 << 20),
|
||||
eH2250LogicalChannelParameters_source = (1 << 19),
|
||||
} options;
|
||||
H245_TransportAddress mediaChannel;
|
||||
H245_TransportAddress mediaControlChannel;
|
||||
} H2250LogicalChannelParameters;
|
||||
|
||||
typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters { /* CHOICE */
|
||||
enum {
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none,
|
||||
} choice;
|
||||
union {
|
||||
H2250LogicalChannelParameters h2250LogicalChannelParameters;
|
||||
};
|
||||
} OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
|
||||
|
||||
typedef struct OpenLogicalChannel_forwardLogicalChannelParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber
|
||||
= (1 << 31),
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency
|
||||
= (1 << 30),
|
||||
eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor
|
||||
= (1 << 29),
|
||||
} options;
|
||||
DataType dataType;
|
||||
OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters
|
||||
multiplexParameters;
|
||||
} OpenLogicalChannel_forwardLogicalChannelParameters;
|
||||
|
||||
typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters { /* CHOICE */
|
||||
enum {
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
|
||||
} choice;
|
||||
union {
|
||||
H2250LogicalChannelParameters h2250LogicalChannelParameters;
|
||||
};
|
||||
} OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
|
||||
|
||||
typedef struct OpenLogicalChannel_reverseLogicalChannelParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
|
||||
= (1 << 31),
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency
|
||||
= (1 << 30),
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor
|
||||
= (1 << 29),
|
||||
} options;
|
||||
OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
|
||||
multiplexParameters;
|
||||
} OpenLogicalChannel_reverseLogicalChannelParameters;
|
||||
|
||||
typedef struct NetworkAccessParameters_networkAddress { /* CHOICE */
|
||||
enum {
|
||||
eNetworkAccessParameters_networkAddress_q2931Address,
|
||||
eNetworkAccessParameters_networkAddress_e164Address,
|
||||
eNetworkAccessParameters_networkAddress_localAreaAddress,
|
||||
} choice;
|
||||
union {
|
||||
H245_TransportAddress localAreaAddress;
|
||||
};
|
||||
} NetworkAccessParameters_networkAddress;
|
||||
|
||||
typedef struct NetworkAccessParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eNetworkAccessParameters_distribution = (1 << 31),
|
||||
eNetworkAccessParameters_externalReference = (1 << 30),
|
||||
eNetworkAccessParameters_t120SetupProcedure = (1 << 29),
|
||||
} options;
|
||||
NetworkAccessParameters_networkAddress networkAddress;
|
||||
} NetworkAccessParameters;
|
||||
|
||||
typedef struct OpenLogicalChannel { /* SEQUENCE */
|
||||
enum {
|
||||
eOpenLogicalChannel_reverseLogicalChannelParameters =
|
||||
(1 << 31),
|
||||
eOpenLogicalChannel_separateStack = (1 << 30),
|
||||
eOpenLogicalChannel_encryptionSync = (1 << 29),
|
||||
} options;
|
||||
OpenLogicalChannel_forwardLogicalChannelParameters
|
||||
forwardLogicalChannelParameters;
|
||||
OpenLogicalChannel_reverseLogicalChannelParameters
|
||||
reverseLogicalChannelParameters;
|
||||
NetworkAccessParameters separateStack;
|
||||
} OpenLogicalChannel;
|
||||
|
||||
typedef struct Setup_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Setup_UUIE_fastStart;
|
||||
|
||||
typedef struct Setup_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eSetup_UUIE_h245Address = (1 << 31),
|
||||
eSetup_UUIE_sourceAddress = (1 << 30),
|
||||
eSetup_UUIE_destinationAddress = (1 << 29),
|
||||
eSetup_UUIE_destCallSignalAddress = (1 << 28),
|
||||
eSetup_UUIE_destExtraCallInfo = (1 << 27),
|
||||
eSetup_UUIE_destExtraCRV = (1 << 26),
|
||||
eSetup_UUIE_callServices = (1 << 25),
|
||||
eSetup_UUIE_sourceCallSignalAddress = (1 << 24),
|
||||
eSetup_UUIE_remoteExtensionAddress = (1 << 23),
|
||||
eSetup_UUIE_callIdentifier = (1 << 22),
|
||||
eSetup_UUIE_h245SecurityCapability = (1 << 21),
|
||||
eSetup_UUIE_tokens = (1 << 20),
|
||||
eSetup_UUIE_cryptoTokens = (1 << 19),
|
||||
eSetup_UUIE_fastStart = (1 << 18),
|
||||
eSetup_UUIE_mediaWaitForConnect = (1 << 17),
|
||||
eSetup_UUIE_canOverlapSend = (1 << 16),
|
||||
eSetup_UUIE_endpointIdentifier = (1 << 15),
|
||||
eSetup_UUIE_multipleCalls = (1 << 14),
|
||||
eSetup_UUIE_maintainConnection = (1 << 13),
|
||||
eSetup_UUIE_connectionParameters = (1 << 12),
|
||||
eSetup_UUIE_language = (1 << 11),
|
||||
eSetup_UUIE_presentationIndicator = (1 << 10),
|
||||
eSetup_UUIE_screeningIndicator = (1 << 9),
|
||||
eSetup_UUIE_serviceControl = (1 << 8),
|
||||
eSetup_UUIE_symmetricOperationRequired = (1 << 7),
|
||||
eSetup_UUIE_capacity = (1 << 6),
|
||||
eSetup_UUIE_circuitInfo = (1 << 5),
|
||||
eSetup_UUIE_desiredProtocols = (1 << 4),
|
||||
eSetup_UUIE_neededFeatures = (1 << 3),
|
||||
eSetup_UUIE_desiredFeatures = (1 << 2),
|
||||
eSetup_UUIE_supportedFeatures = (1 << 1),
|
||||
eSetup_UUIE_parallelH245Control = (1 << 0),
|
||||
} options;
|
||||
TransportAddress h245Address;
|
||||
TransportAddress destCallSignalAddress;
|
||||
TransportAddress sourceCallSignalAddress;
|
||||
Setup_UUIE_fastStart fastStart;
|
||||
} Setup_UUIE;
|
||||
|
||||
typedef struct CallProceeding_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} CallProceeding_UUIE_fastStart;
|
||||
|
||||
typedef struct CallProceeding_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eCallProceeding_UUIE_h245Address = (1 << 31),
|
||||
eCallProceeding_UUIE_callIdentifier = (1 << 30),
|
||||
eCallProceeding_UUIE_h245SecurityMode = (1 << 29),
|
||||
eCallProceeding_UUIE_tokens = (1 << 28),
|
||||
eCallProceeding_UUIE_cryptoTokens = (1 << 27),
|
||||
eCallProceeding_UUIE_fastStart = (1 << 26),
|
||||
eCallProceeding_UUIE_multipleCalls = (1 << 25),
|
||||
eCallProceeding_UUIE_maintainConnection = (1 << 24),
|
||||
eCallProceeding_UUIE_fastConnectRefused = (1 << 23),
|
||||
eCallProceeding_UUIE_featureSet = (1 << 22),
|
||||
} options;
|
||||
TransportAddress h245Address;
|
||||
CallProceeding_UUIE_fastStart fastStart;
|
||||
} CallProceeding_UUIE;
|
||||
|
||||
typedef struct Connect_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Connect_UUIE_fastStart;
|
||||
|
||||
typedef struct Connect_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eConnect_UUIE_h245Address = (1 << 31),
|
||||
eConnect_UUIE_callIdentifier = (1 << 30),
|
||||
eConnect_UUIE_h245SecurityMode = (1 << 29),
|
||||
eConnect_UUIE_tokens = (1 << 28),
|
||||
eConnect_UUIE_cryptoTokens = (1 << 27),
|
||||
eConnect_UUIE_fastStart = (1 << 26),
|
||||
eConnect_UUIE_multipleCalls = (1 << 25),
|
||||
eConnect_UUIE_maintainConnection = (1 << 24),
|
||||
eConnect_UUIE_language = (1 << 23),
|
||||
eConnect_UUIE_connectedAddress = (1 << 22),
|
||||
eConnect_UUIE_presentationIndicator = (1 << 21),
|
||||
eConnect_UUIE_screeningIndicator = (1 << 20),
|
||||
eConnect_UUIE_fastConnectRefused = (1 << 19),
|
||||
eConnect_UUIE_serviceControl = (1 << 18),
|
||||
eConnect_UUIE_capacity = (1 << 17),
|
||||
eConnect_UUIE_featureSet = (1 << 16),
|
||||
} options;
|
||||
TransportAddress h245Address;
|
||||
Connect_UUIE_fastStart fastStart;
|
||||
} Connect_UUIE;
|
||||
|
||||
typedef struct Alerting_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Alerting_UUIE_fastStart;
|
||||
|
||||
typedef struct Alerting_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eAlerting_UUIE_h245Address = (1 << 31),
|
||||
eAlerting_UUIE_callIdentifier = (1 << 30),
|
||||
eAlerting_UUIE_h245SecurityMode = (1 << 29),
|
||||
eAlerting_UUIE_tokens = (1 << 28),
|
||||
eAlerting_UUIE_cryptoTokens = (1 << 27),
|
||||
eAlerting_UUIE_fastStart = (1 << 26),
|
||||
eAlerting_UUIE_multipleCalls = (1 << 25),
|
||||
eAlerting_UUIE_maintainConnection = (1 << 24),
|
||||
eAlerting_UUIE_alertingAddress = (1 << 23),
|
||||
eAlerting_UUIE_presentationIndicator = (1 << 22),
|
||||
eAlerting_UUIE_screeningIndicator = (1 << 21),
|
||||
eAlerting_UUIE_fastConnectRefused = (1 << 20),
|
||||
eAlerting_UUIE_serviceControl = (1 << 19),
|
||||
eAlerting_UUIE_capacity = (1 << 18),
|
||||
eAlerting_UUIE_featureSet = (1 << 17),
|
||||
} options;
|
||||
TransportAddress h245Address;
|
||||
Alerting_UUIE_fastStart fastStart;
|
||||
} Alerting_UUIE;
|
||||
|
||||
typedef struct Information_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Information_UUIE_fastStart;
|
||||
|
||||
typedef struct Information_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eInformation_UUIE_callIdentifier = (1 << 31),
|
||||
eInformation_UUIE_tokens = (1 << 30),
|
||||
eInformation_UUIE_cryptoTokens = (1 << 29),
|
||||
eInformation_UUIE_fastStart = (1 << 28),
|
||||
eInformation_UUIE_fastConnectRefused = (1 << 27),
|
||||
eInformation_UUIE_circuitInfo = (1 << 26),
|
||||
} options;
|
||||
Information_UUIE_fastStart fastStart;
|
||||
} Information_UUIE;
|
||||
|
||||
typedef struct FacilityReason { /* CHOICE */
|
||||
enum {
|
||||
eFacilityReason_routeCallToGatekeeper,
|
||||
eFacilityReason_callForwarded,
|
||||
eFacilityReason_routeCallToMC,
|
||||
eFacilityReason_undefinedReason,
|
||||
eFacilityReason_conferenceListChoice,
|
||||
eFacilityReason_startH245,
|
||||
eFacilityReason_noH245,
|
||||
eFacilityReason_newTokens,
|
||||
eFacilityReason_featureSetUpdate,
|
||||
eFacilityReason_forwardedElements,
|
||||
eFacilityReason_transportedInformation,
|
||||
} choice;
|
||||
} FacilityReason;
|
||||
|
||||
typedef struct Facility_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Facility_UUIE_fastStart;
|
||||
|
||||
typedef struct Facility_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eFacility_UUIE_alternativeAddress = (1 << 31),
|
||||
eFacility_UUIE_alternativeAliasAddress = (1 << 30),
|
||||
eFacility_UUIE_conferenceID = (1 << 29),
|
||||
eFacility_UUIE_callIdentifier = (1 << 28),
|
||||
eFacility_UUIE_destExtraCallInfo = (1 << 27),
|
||||
eFacility_UUIE_remoteExtensionAddress = (1 << 26),
|
||||
eFacility_UUIE_tokens = (1 << 25),
|
||||
eFacility_UUIE_cryptoTokens = (1 << 24),
|
||||
eFacility_UUIE_conferences = (1 << 23),
|
||||
eFacility_UUIE_h245Address = (1 << 22),
|
||||
eFacility_UUIE_fastStart = (1 << 21),
|
||||
eFacility_UUIE_multipleCalls = (1 << 20),
|
||||
eFacility_UUIE_maintainConnection = (1 << 19),
|
||||
eFacility_UUIE_fastConnectRefused = (1 << 18),
|
||||
eFacility_UUIE_serviceControl = (1 << 17),
|
||||
eFacility_UUIE_circuitInfo = (1 << 16),
|
||||
eFacility_UUIE_featureSet = (1 << 15),
|
||||
eFacility_UUIE_destinationInfo = (1 << 14),
|
||||
eFacility_UUIE_h245SecurityMode = (1 << 13),
|
||||
} options;
|
||||
FacilityReason reason;
|
||||
TransportAddress h245Address;
|
||||
Facility_UUIE_fastStart fastStart;
|
||||
} Facility_UUIE;
|
||||
|
||||
typedef struct Progress_UUIE_fastStart { /* SEQUENCE OF */
|
||||
int count;
|
||||
OpenLogicalChannel item[30];
|
||||
} Progress_UUIE_fastStart;
|
||||
|
||||
typedef struct Progress_UUIE { /* SEQUENCE */
|
||||
enum {
|
||||
eProgress_UUIE_h245Address = (1 << 31),
|
||||
eProgress_UUIE_h245SecurityMode = (1 << 30),
|
||||
eProgress_UUIE_tokens = (1 << 29),
|
||||
eProgress_UUIE_cryptoTokens = (1 << 28),
|
||||
eProgress_UUIE_fastStart = (1 << 27),
|
||||
eProgress_UUIE_multipleCalls = (1 << 26),
|
||||
eProgress_UUIE_maintainConnection = (1 << 25),
|
||||
eProgress_UUIE_fastConnectRefused = (1 << 24),
|
||||
} options;
|
||||
TransportAddress h245Address;
|
||||
Progress_UUIE_fastStart fastStart;
|
||||
} Progress_UUIE;
|
||||
|
||||
typedef struct H323_UU_PDU_h323_message_body { /* CHOICE */
|
||||
enum {
|
||||
eH323_UU_PDU_h323_message_body_setup,
|
||||
eH323_UU_PDU_h323_message_body_callProceeding,
|
||||
eH323_UU_PDU_h323_message_body_connect,
|
||||
eH323_UU_PDU_h323_message_body_alerting,
|
||||
eH323_UU_PDU_h323_message_body_information,
|
||||
eH323_UU_PDU_h323_message_body_releaseComplete,
|
||||
eH323_UU_PDU_h323_message_body_facility,
|
||||
eH323_UU_PDU_h323_message_body_progress,
|
||||
eH323_UU_PDU_h323_message_body_empty,
|
||||
eH323_UU_PDU_h323_message_body_status,
|
||||
eH323_UU_PDU_h323_message_body_statusInquiry,
|
||||
eH323_UU_PDU_h323_message_body_setupAcknowledge,
|
||||
eH323_UU_PDU_h323_message_body_notify,
|
||||
} choice;
|
||||
union {
|
||||
Setup_UUIE setup;
|
||||
CallProceeding_UUIE callProceeding;
|
||||
Connect_UUIE connect;
|
||||
Alerting_UUIE alerting;
|
||||
Information_UUIE information;
|
||||
Facility_UUIE facility;
|
||||
Progress_UUIE progress;
|
||||
};
|
||||
} H323_UU_PDU_h323_message_body;
|
||||
|
||||
typedef struct RequestMessage { /* CHOICE */
|
||||
enum {
|
||||
eRequestMessage_nonStandard,
|
||||
eRequestMessage_masterSlaveDetermination,
|
||||
eRequestMessage_terminalCapabilitySet,
|
||||
eRequestMessage_openLogicalChannel,
|
||||
eRequestMessage_closeLogicalChannel,
|
||||
eRequestMessage_requestChannelClose,
|
||||
eRequestMessage_multiplexEntrySend,
|
||||
eRequestMessage_requestMultiplexEntry,
|
||||
eRequestMessage_requestMode,
|
||||
eRequestMessage_roundTripDelayRequest,
|
||||
eRequestMessage_maintenanceLoopRequest,
|
||||
eRequestMessage_communicationModeRequest,
|
||||
eRequestMessage_conferenceRequest,
|
||||
eRequestMessage_multilinkRequest,
|
||||
eRequestMessage_logicalChannelRateRequest,
|
||||
} choice;
|
||||
union {
|
||||
OpenLogicalChannel openLogicalChannel;
|
||||
};
|
||||
} RequestMessage;
|
||||
|
||||
typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters { /* CHOICE */
|
||||
enum {
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
|
||||
} choice;
|
||||
union {
|
||||
H2250LogicalChannelParameters h2250LogicalChannelParameters;
|
||||
};
|
||||
} OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
|
||||
|
||||
typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber
|
||||
= (1 << 31),
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
|
||||
= (1 << 30),
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor
|
||||
= (1 << 29),
|
||||
} options;
|
||||
OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
|
||||
multiplexParameters;
|
||||
} OpenLogicalChannelAck_reverseLogicalChannelParameters;
|
||||
|
||||
typedef struct H2250LogicalChannelAckParameters { /* SEQUENCE */
|
||||
enum {
|
||||
eH2250LogicalChannelAckParameters_nonStandard = (1 << 31),
|
||||
eH2250LogicalChannelAckParameters_sessionID = (1 << 30),
|
||||
eH2250LogicalChannelAckParameters_mediaChannel = (1 << 29),
|
||||
eH2250LogicalChannelAckParameters_mediaControlChannel =
|
||||
(1 << 28),
|
||||
eH2250LogicalChannelAckParameters_dynamicRTPPayloadType =
|
||||
(1 << 27),
|
||||
eH2250LogicalChannelAckParameters_flowControlToZero =
|
||||
(1 << 26),
|
||||
eH2250LogicalChannelAckParameters_portNumber = (1 << 25),
|
||||
} options;
|
||||
H245_TransportAddress mediaChannel;
|
||||
H245_TransportAddress mediaControlChannel;
|
||||
} H2250LogicalChannelAckParameters;
|
||||
|
||||
typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters { /* CHOICE */
|
||||
enum {
|
||||
eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters,
|
||||
} choice;
|
||||
union {
|
||||
H2250LogicalChannelAckParameters
|
||||
h2250LogicalChannelAckParameters;
|
||||
};
|
||||
} OpenLogicalChannelAck_forwardMultiplexAckParameters;
|
||||
|
||||
typedef struct OpenLogicalChannelAck { /* SEQUENCE */
|
||||
enum {
|
||||
eOpenLogicalChannelAck_reverseLogicalChannelParameters =
|
||||
(1 << 31),
|
||||
eOpenLogicalChannelAck_separateStack = (1 << 30),
|
||||
eOpenLogicalChannelAck_forwardMultiplexAckParameters =
|
||||
(1 << 29),
|
||||
eOpenLogicalChannelAck_encryptionSync = (1 << 28),
|
||||
} options;
|
||||
OpenLogicalChannelAck_reverseLogicalChannelParameters
|
||||
reverseLogicalChannelParameters;
|
||||
OpenLogicalChannelAck_forwardMultiplexAckParameters
|
||||
forwardMultiplexAckParameters;
|
||||
} OpenLogicalChannelAck;
|
||||
|
||||
typedef struct ResponseMessage { /* CHOICE */
|
||||
enum {
|
||||
eResponseMessage_nonStandard,
|
||||
eResponseMessage_masterSlaveDeterminationAck,
|
||||
eResponseMessage_masterSlaveDeterminationReject,
|
||||
eResponseMessage_terminalCapabilitySetAck,
|
||||
eResponseMessage_terminalCapabilitySetReject,
|
||||
eResponseMessage_openLogicalChannelAck,
|
||||
eResponseMessage_openLogicalChannelReject,
|
||||
eResponseMessage_closeLogicalChannelAck,
|
||||
eResponseMessage_requestChannelCloseAck,
|
||||
eResponseMessage_requestChannelCloseReject,
|
||||
eResponseMessage_multiplexEntrySendAck,
|
||||
eResponseMessage_multiplexEntrySendReject,
|
||||
eResponseMessage_requestMultiplexEntryAck,
|
||||
eResponseMessage_requestMultiplexEntryReject,
|
||||
eResponseMessage_requestModeAck,
|
||||
eResponseMessage_requestModeReject,
|
||||
eResponseMessage_roundTripDelayResponse,
|
||||
eResponseMessage_maintenanceLoopAck,
|
||||
eResponseMessage_maintenanceLoopReject,
|
||||
eResponseMessage_communicationModeResponse,
|
||||
eResponseMessage_conferenceResponse,
|
||||
eResponseMessage_multilinkResponse,
|
||||
eResponseMessage_logicalChannelRateAcknowledge,
|
||||
eResponseMessage_logicalChannelRateReject,
|
||||
} choice;
|
||||
union {
|
||||
OpenLogicalChannelAck openLogicalChannelAck;
|
||||
};
|
||||
} ResponseMessage;
|
||||
|
||||
typedef struct MultimediaSystemControlMessage { /* CHOICE */
|
||||
enum {
|
||||
eMultimediaSystemControlMessage_request,
|
||||
eMultimediaSystemControlMessage_response,
|
||||
eMultimediaSystemControlMessage_command,
|
||||
eMultimediaSystemControlMessage_indication,
|
||||
} choice;
|
||||
union {
|
||||
RequestMessage request;
|
||||
ResponseMessage response;
|
||||
};
|
||||
} MultimediaSystemControlMessage;
|
||||
|
||||
typedef struct H323_UU_PDU_h245Control { /* SEQUENCE OF */
|
||||
int count;
|
||||
MultimediaSystemControlMessage item[4];
|
||||
} H323_UU_PDU_h245Control;
|
||||
|
||||
typedef struct H323_UU_PDU { /* SEQUENCE */
|
||||
enum {
|
||||
eH323_UU_PDU_nonStandardData = (1 << 31),
|
||||
eH323_UU_PDU_h4501SupplementaryService = (1 << 30),
|
||||
eH323_UU_PDU_h245Tunneling = (1 << 29),
|
||||
eH323_UU_PDU_h245Control = (1 << 28),
|
||||
eH323_UU_PDU_nonStandardControl = (1 << 27),
|
||||
eH323_UU_PDU_callLinkage = (1 << 26),
|
||||
eH323_UU_PDU_tunnelledSignallingMessage = (1 << 25),
|
||||
eH323_UU_PDU_provisionalRespToH245Tunneling = (1 << 24),
|
||||
eH323_UU_PDU_stimulusControl = (1 << 23),
|
||||
eH323_UU_PDU_genericData = (1 << 22),
|
||||
} options;
|
||||
H323_UU_PDU_h323_message_body h323_message_body;
|
||||
H323_UU_PDU_h245Control h245Control;
|
||||
} H323_UU_PDU;
|
||||
|
||||
typedef struct H323_UserInformation { /* SEQUENCE */
|
||||
enum {
|
||||
eH323_UserInformation_user_data = (1 << 31),
|
||||
} options;
|
||||
H323_UU_PDU h323_uu_pdu;
|
||||
} H323_UserInformation;
|
||||
|
||||
typedef struct GatekeeperRequest { /* SEQUENCE */
|
||||
enum {
|
||||
eGatekeeperRequest_nonStandardData = (1 << 31),
|
||||
eGatekeeperRequest_gatekeeperIdentifier = (1 << 30),
|
||||
eGatekeeperRequest_callServices = (1 << 29),
|
||||
eGatekeeperRequest_endpointAlias = (1 << 28),
|
||||
eGatekeeperRequest_alternateEndpoints = (1 << 27),
|
||||
eGatekeeperRequest_tokens = (1 << 26),
|
||||
eGatekeeperRequest_cryptoTokens = (1 << 25),
|
||||
eGatekeeperRequest_authenticationCapability = (1 << 24),
|
||||
eGatekeeperRequest_algorithmOIDs = (1 << 23),
|
||||
eGatekeeperRequest_integrity = (1 << 22),
|
||||
eGatekeeperRequest_integrityCheckValue = (1 << 21),
|
||||
eGatekeeperRequest_supportsAltGK = (1 << 20),
|
||||
eGatekeeperRequest_featureSet = (1 << 19),
|
||||
eGatekeeperRequest_genericData = (1 << 18),
|
||||
} options;
|
||||
TransportAddress rasAddress;
|
||||
} GatekeeperRequest;
|
||||
|
||||
typedef struct GatekeeperConfirm { /* SEQUENCE */
|
||||
enum {
|
||||
eGatekeeperConfirm_nonStandardData = (1 << 31),
|
||||
eGatekeeperConfirm_gatekeeperIdentifier = (1 << 30),
|
||||
eGatekeeperConfirm_alternateGatekeeper = (1 << 29),
|
||||
eGatekeeperConfirm_authenticationMode = (1 << 28),
|
||||
eGatekeeperConfirm_tokens = (1 << 27),
|
||||
eGatekeeperConfirm_cryptoTokens = (1 << 26),
|
||||
eGatekeeperConfirm_algorithmOID = (1 << 25),
|
||||
eGatekeeperConfirm_integrity = (1 << 24),
|
||||
eGatekeeperConfirm_integrityCheckValue = (1 << 23),
|
||||
eGatekeeperConfirm_featureSet = (1 << 22),
|
||||
eGatekeeperConfirm_genericData = (1 << 21),
|
||||
} options;
|
||||
TransportAddress rasAddress;
|
||||
} GatekeeperConfirm;
|
||||
|
||||
typedef struct RegistrationRequest_callSignalAddress { /* SEQUENCE OF */
|
||||
int count;
|
||||
TransportAddress item[10];
|
||||
} RegistrationRequest_callSignalAddress;
|
||||
|
||||
typedef struct RegistrationRequest_rasAddress { /* SEQUENCE OF */
|
||||
int count;
|
||||
TransportAddress item[10];
|
||||
} RegistrationRequest_rasAddress;
|
||||
|
||||
typedef struct RegistrationRequest { /* SEQUENCE */
|
||||
enum {
|
||||
eRegistrationRequest_nonStandardData = (1 << 31),
|
||||
eRegistrationRequest_terminalAlias = (1 << 30),
|
||||
eRegistrationRequest_gatekeeperIdentifier = (1 << 29),
|
||||
eRegistrationRequest_alternateEndpoints = (1 << 28),
|
||||
eRegistrationRequest_timeToLive = (1 << 27),
|
||||
eRegistrationRequest_tokens = (1 << 26),
|
||||
eRegistrationRequest_cryptoTokens = (1 << 25),
|
||||
eRegistrationRequest_integrityCheckValue = (1 << 24),
|
||||
eRegistrationRequest_keepAlive = (1 << 23),
|
||||
eRegistrationRequest_endpointIdentifier = (1 << 22),
|
||||
eRegistrationRequest_willSupplyUUIEs = (1 << 21),
|
||||
eRegistrationRequest_maintainConnection = (1 << 20),
|
||||
eRegistrationRequest_alternateTransportAddresses = (1 << 19),
|
||||
eRegistrationRequest_additiveRegistration = (1 << 18),
|
||||
eRegistrationRequest_terminalAliasPattern = (1 << 17),
|
||||
eRegistrationRequest_supportsAltGK = (1 << 16),
|
||||
eRegistrationRequest_usageReportingCapability = (1 << 15),
|
||||
eRegistrationRequest_multipleCalls = (1 << 14),
|
||||
eRegistrationRequest_supportedH248Packages = (1 << 13),
|
||||
eRegistrationRequest_callCreditCapability = (1 << 12),
|
||||
eRegistrationRequest_capacityReportingCapability = (1 << 11),
|
||||
eRegistrationRequest_capacity = (1 << 10),
|
||||
eRegistrationRequest_featureSet = (1 << 9),
|
||||
eRegistrationRequest_genericData = (1 << 8),
|
||||
} options;
|
||||
RegistrationRequest_callSignalAddress callSignalAddress;
|
||||
RegistrationRequest_rasAddress rasAddress;
|
||||
unsigned timeToLive;
|
||||
} RegistrationRequest;
|
||||
|
||||
typedef struct RegistrationConfirm_callSignalAddress { /* SEQUENCE OF */
|
||||
int count;
|
||||
TransportAddress item[10];
|
||||
} RegistrationConfirm_callSignalAddress;
|
||||
|
||||
typedef struct RegistrationConfirm { /* SEQUENCE */
|
||||
enum {
|
||||
eRegistrationConfirm_nonStandardData = (1 << 31),
|
||||
eRegistrationConfirm_terminalAlias = (1 << 30),
|
||||
eRegistrationConfirm_gatekeeperIdentifier = (1 << 29),
|
||||
eRegistrationConfirm_alternateGatekeeper = (1 << 28),
|
||||
eRegistrationConfirm_timeToLive = (1 << 27),
|
||||
eRegistrationConfirm_tokens = (1 << 26),
|
||||
eRegistrationConfirm_cryptoTokens = (1 << 25),
|
||||
eRegistrationConfirm_integrityCheckValue = (1 << 24),
|
||||
eRegistrationConfirm_willRespondToIRR = (1 << 23),
|
||||
eRegistrationConfirm_preGrantedARQ = (1 << 22),
|
||||
eRegistrationConfirm_maintainConnection = (1 << 21),
|
||||
eRegistrationConfirm_serviceControl = (1 << 20),
|
||||
eRegistrationConfirm_supportsAdditiveRegistration = (1 << 19),
|
||||
eRegistrationConfirm_terminalAliasPattern = (1 << 18),
|
||||
eRegistrationConfirm_supportedPrefixes = (1 << 17),
|
||||
eRegistrationConfirm_usageSpec = (1 << 16),
|
||||
eRegistrationConfirm_featureServerAlias = (1 << 15),
|
||||
eRegistrationConfirm_capacityReportingSpec = (1 << 14),
|
||||
eRegistrationConfirm_featureSet = (1 << 13),
|
||||
eRegistrationConfirm_genericData = (1 << 12),
|
||||
} options;
|
||||
RegistrationConfirm_callSignalAddress callSignalAddress;
|
||||
unsigned timeToLive;
|
||||
} RegistrationConfirm;
|
||||
|
||||
typedef struct UnregistrationRequest_callSignalAddress { /* SEQUENCE OF */
|
||||
int count;
|
||||
TransportAddress item[10];
|
||||
} UnregistrationRequest_callSignalAddress;
|
||||
|
||||
typedef struct UnregistrationRequest { /* SEQUENCE */
|
||||
enum {
|
||||
eUnregistrationRequest_endpointAlias = (1 << 31),
|
||||
eUnregistrationRequest_nonStandardData = (1 << 30),
|
||||
eUnregistrationRequest_endpointIdentifier = (1 << 29),
|
||||
eUnregistrationRequest_alternateEndpoints = (1 << 28),
|
||||
eUnregistrationRequest_gatekeeperIdentifier = (1 << 27),
|
||||
eUnregistrationRequest_tokens = (1 << 26),
|
||||
eUnregistrationRequest_cryptoTokens = (1 << 25),
|
||||
eUnregistrationRequest_integrityCheckValue = (1 << 24),
|
||||
eUnregistrationRequest_reason = (1 << 23),
|
||||
eUnregistrationRequest_endpointAliasPattern = (1 << 22),
|
||||
eUnregistrationRequest_supportedPrefixes = (1 << 21),
|
||||
eUnregistrationRequest_alternateGatekeeper = (1 << 20),
|
||||
eUnregistrationRequest_genericData = (1 << 19),
|
||||
} options;
|
||||
UnregistrationRequest_callSignalAddress callSignalAddress;
|
||||
} UnregistrationRequest;
|
||||
|
||||
typedef struct AdmissionRequest { /* SEQUENCE */
|
||||
enum {
|
||||
eAdmissionRequest_callModel = (1 << 31),
|
||||
eAdmissionRequest_destinationInfo = (1 << 30),
|
||||
eAdmissionRequest_destCallSignalAddress = (1 << 29),
|
||||
eAdmissionRequest_destExtraCallInfo = (1 << 28),
|
||||
eAdmissionRequest_srcCallSignalAddress = (1 << 27),
|
||||
eAdmissionRequest_nonStandardData = (1 << 26),
|
||||
eAdmissionRequest_callServices = (1 << 25),
|
||||
eAdmissionRequest_canMapAlias = (1 << 24),
|
||||
eAdmissionRequest_callIdentifier = (1 << 23),
|
||||
eAdmissionRequest_srcAlternatives = (1 << 22),
|
||||
eAdmissionRequest_destAlternatives = (1 << 21),
|
||||
eAdmissionRequest_gatekeeperIdentifier = (1 << 20),
|
||||
eAdmissionRequest_tokens = (1 << 19),
|
||||
eAdmissionRequest_cryptoTokens = (1 << 18),
|
||||
eAdmissionRequest_integrityCheckValue = (1 << 17),
|
||||
eAdmissionRequest_transportQOS = (1 << 16),
|
||||
eAdmissionRequest_willSupplyUUIEs = (1 << 15),
|
||||
eAdmissionRequest_callLinkage = (1 << 14),
|
||||
eAdmissionRequest_gatewayDataRate = (1 << 13),
|
||||
eAdmissionRequest_capacity = (1 << 12),
|
||||
eAdmissionRequest_circuitInfo = (1 << 11),
|
||||
eAdmissionRequest_desiredProtocols = (1 << 10),
|
||||
eAdmissionRequest_desiredTunnelledProtocol = (1 << 9),
|
||||
eAdmissionRequest_featureSet = (1 << 8),
|
||||
eAdmissionRequest_genericData = (1 << 7),
|
||||
} options;
|
||||
TransportAddress destCallSignalAddress;
|
||||
TransportAddress srcCallSignalAddress;
|
||||
} AdmissionRequest;
|
||||
|
||||
typedef struct AdmissionConfirm { /* SEQUENCE */
|
||||
enum {
|
||||
eAdmissionConfirm_irrFrequency = (1 << 31),
|
||||
eAdmissionConfirm_nonStandardData = (1 << 30),
|
||||
eAdmissionConfirm_destinationInfo = (1 << 29),
|
||||
eAdmissionConfirm_destExtraCallInfo = (1 << 28),
|
||||
eAdmissionConfirm_destinationType = (1 << 27),
|
||||
eAdmissionConfirm_remoteExtensionAddress = (1 << 26),
|
||||
eAdmissionConfirm_alternateEndpoints = (1 << 25),
|
||||
eAdmissionConfirm_tokens = (1 << 24),
|
||||
eAdmissionConfirm_cryptoTokens = (1 << 23),
|
||||
eAdmissionConfirm_integrityCheckValue = (1 << 22),
|
||||
eAdmissionConfirm_transportQOS = (1 << 21),
|
||||
eAdmissionConfirm_willRespondToIRR = (1 << 20),
|
||||
eAdmissionConfirm_uuiesRequested = (1 << 19),
|
||||
eAdmissionConfirm_language = (1 << 18),
|
||||
eAdmissionConfirm_alternateTransportAddresses = (1 << 17),
|
||||
eAdmissionConfirm_useSpecifiedTransport = (1 << 16),
|
||||
eAdmissionConfirm_circuitInfo = (1 << 15),
|
||||
eAdmissionConfirm_usageSpec = (1 << 14),
|
||||
eAdmissionConfirm_supportedProtocols = (1 << 13),
|
||||
eAdmissionConfirm_serviceControl = (1 << 12),
|
||||
eAdmissionConfirm_multipleCalls = (1 << 11),
|
||||
eAdmissionConfirm_featureSet = (1 << 10),
|
||||
eAdmissionConfirm_genericData = (1 << 9),
|
||||
} options;
|
||||
TransportAddress destCallSignalAddress;
|
||||
} AdmissionConfirm;
|
||||
|
||||
typedef struct LocationRequest { /* SEQUENCE */
|
||||
enum {
|
||||
eLocationRequest_endpointIdentifier = (1 << 31),
|
||||
eLocationRequest_nonStandardData = (1 << 30),
|
||||
eLocationRequest_sourceInfo = (1 << 29),
|
||||
eLocationRequest_canMapAlias = (1 << 28),
|
||||
eLocationRequest_gatekeeperIdentifier = (1 << 27),
|
||||
eLocationRequest_tokens = (1 << 26),
|
||||
eLocationRequest_cryptoTokens = (1 << 25),
|
||||
eLocationRequest_integrityCheckValue = (1 << 24),
|
||||
eLocationRequest_desiredProtocols = (1 << 23),
|
||||
eLocationRequest_desiredTunnelledProtocol = (1 << 22),
|
||||
eLocationRequest_featureSet = (1 << 21),
|
||||
eLocationRequest_genericData = (1 << 20),
|
||||
eLocationRequest_hopCount = (1 << 19),
|
||||
eLocationRequest_circuitInfo = (1 << 18),
|
||||
} options;
|
||||
TransportAddress replyAddress;
|
||||
} LocationRequest;
|
||||
|
||||
typedef struct LocationConfirm { /* SEQUENCE */
|
||||
enum {
|
||||
eLocationConfirm_nonStandardData = (1 << 31),
|
||||
eLocationConfirm_destinationInfo = (1 << 30),
|
||||
eLocationConfirm_destExtraCallInfo = (1 << 29),
|
||||
eLocationConfirm_destinationType = (1 << 28),
|
||||
eLocationConfirm_remoteExtensionAddress = (1 << 27),
|
||||
eLocationConfirm_alternateEndpoints = (1 << 26),
|
||||
eLocationConfirm_tokens = (1 << 25),
|
||||
eLocationConfirm_cryptoTokens = (1 << 24),
|
||||
eLocationConfirm_integrityCheckValue = (1 << 23),
|
||||
eLocationConfirm_alternateTransportAddresses = (1 << 22),
|
||||
eLocationConfirm_supportedProtocols = (1 << 21),
|
||||
eLocationConfirm_multipleCalls = (1 << 20),
|
||||
eLocationConfirm_featureSet = (1 << 19),
|
||||
eLocationConfirm_genericData = (1 << 18),
|
||||
eLocationConfirm_circuitInfo = (1 << 17),
|
||||
eLocationConfirm_serviceControl = (1 << 16),
|
||||
} options;
|
||||
TransportAddress callSignalAddress;
|
||||
TransportAddress rasAddress;
|
||||
} LocationConfirm;
|
||||
|
||||
typedef struct InfoRequestResponse_callSignalAddress { /* SEQUENCE OF */
|
||||
int count;
|
||||
TransportAddress item[10];
|
||||
} InfoRequestResponse_callSignalAddress;
|
||||
|
||||
typedef struct InfoRequestResponse { /* SEQUENCE */
|
||||
enum {
|
||||
eInfoRequestResponse_nonStandardData = (1 << 31),
|
||||
eInfoRequestResponse_endpointAlias = (1 << 30),
|
||||
eInfoRequestResponse_perCallInfo = (1 << 29),
|
||||
eInfoRequestResponse_tokens = (1 << 28),
|
||||
eInfoRequestResponse_cryptoTokens = (1 << 27),
|
||||
eInfoRequestResponse_integrityCheckValue = (1 << 26),
|
||||
eInfoRequestResponse_needResponse = (1 << 25),
|
||||
eInfoRequestResponse_capacity = (1 << 24),
|
||||
eInfoRequestResponse_irrStatus = (1 << 23),
|
||||
eInfoRequestResponse_unsolicited = (1 << 22),
|
||||
eInfoRequestResponse_genericData = (1 << 21),
|
||||
} options;
|
||||
TransportAddress rasAddress;
|
||||
InfoRequestResponse_callSignalAddress callSignalAddress;
|
||||
} InfoRequestResponse;
|
||||
|
||||
typedef struct RasMessage { /* CHOICE */
|
||||
enum {
|
||||
eRasMessage_gatekeeperRequest,
|
||||
eRasMessage_gatekeeperConfirm,
|
||||
eRasMessage_gatekeeperReject,
|
||||
eRasMessage_registrationRequest,
|
||||
eRasMessage_registrationConfirm,
|
||||
eRasMessage_registrationReject,
|
||||
eRasMessage_unregistrationRequest,
|
||||
eRasMessage_unregistrationConfirm,
|
||||
eRasMessage_unregistrationReject,
|
||||
eRasMessage_admissionRequest,
|
||||
eRasMessage_admissionConfirm,
|
||||
eRasMessage_admissionReject,
|
||||
eRasMessage_bandwidthRequest,
|
||||
eRasMessage_bandwidthConfirm,
|
||||
eRasMessage_bandwidthReject,
|
||||
eRasMessage_disengageRequest,
|
||||
eRasMessage_disengageConfirm,
|
||||
eRasMessage_disengageReject,
|
||||
eRasMessage_locationRequest,
|
||||
eRasMessage_locationConfirm,
|
||||
eRasMessage_locationReject,
|
||||
eRasMessage_infoRequest,
|
||||
eRasMessage_infoRequestResponse,
|
||||
eRasMessage_nonStandardMessage,
|
||||
eRasMessage_unknownMessageResponse,
|
||||
eRasMessage_requestInProgress,
|
||||
eRasMessage_resourcesAvailableIndicate,
|
||||
eRasMessage_resourcesAvailableConfirm,
|
||||
eRasMessage_infoRequestAck,
|
||||
eRasMessage_infoRequestNak,
|
||||
eRasMessage_serviceControlIndication,
|
||||
eRasMessage_serviceControlResponse,
|
||||
} choice;
|
||||
union {
|
||||
GatekeeperRequest gatekeeperRequest;
|
||||
GatekeeperConfirm gatekeeperConfirm;
|
||||
RegistrationRequest registrationRequest;
|
||||
RegistrationConfirm registrationConfirm;
|
||||
UnregistrationRequest unregistrationRequest;
|
||||
AdmissionRequest admissionRequest;
|
||||
AdmissionConfirm admissionConfirm;
|
||||
LocationRequest locationRequest;
|
||||
LocationConfirm locationConfirm;
|
||||
InfoRequestResponse infoRequestResponse;
|
||||
};
|
||||
} RasMessage;
|
@@ -73,6 +73,9 @@ enum nf_ip6_hook_priorities {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NETFILTER
|
||||
extern unsigned int nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
|
||||
extern int ipv6_netfilter_init(void);
|
||||
extern void ipv6_netfilter_fini(void);
|
||||
#else /* CONFIG_NETFILTER */
|
||||
|
@@ -3,11 +3,9 @@
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
#ifndef CONFIG_FLATMEM
|
||||
#include <asm/numnodes.h>
|
||||
#endif
|
||||
|
||||
#ifndef NODES_SHIFT
|
||||
#ifdef CONFIG_NODES_SHIFT
|
||||
#define NODES_SHIFT CONFIG_NODES_SHIFT
|
||||
#else
|
||||
#define NODES_SHIFT 0
|
||||
#endif
|
||||
|
||||
|
@@ -48,8 +48,20 @@
|
||||
|
||||
/*
|
||||
* Don't use the *_dontuse flags. Use the macros. Otherwise you'll break
|
||||
* locked- and dirty-page accounting. The top eight bits of page->flags are
|
||||
* used for page->zone, so putting flag bits there doesn't work.
|
||||
* locked- and dirty-page accounting.
|
||||
*
|
||||
* The page flags field is split into two parts, the main flags area
|
||||
* which extends from the low bits upwards, and the fields area which
|
||||
* extends from the high bits downwards.
|
||||
*
|
||||
* | FIELD | ... | FLAGS |
|
||||
* N-1 ^ 0
|
||||
* (N-FLAGS_RESERVED)
|
||||
*
|
||||
* The fields area is reserved for fields mapping zone, node and SPARSEMEM
|
||||
* section. The boundry between these two areas is defined by
|
||||
* FLAGS_RESERVED which defines the width of the fields section
|
||||
* (see linux/mmzone.h). New flags must _not_ overlap with this area.
|
||||
*/
|
||||
#define PG_locked 0 /* Page is locked. Don't touch. */
|
||||
#define PG_error 1
|
||||
@@ -74,7 +86,9 @@
|
||||
#define PG_mappedtodisk 16 /* Has blocks allocated on-disk */
|
||||
#define PG_reclaim 17 /* To be reclaimed asap */
|
||||
#define PG_nosave_free 18 /* Free, should not be written */
|
||||
#define PG_uncached 19 /* Page has been mapped as uncached */
|
||||
#define PG_buddy 19 /* Page is free, on buddy lists */
|
||||
|
||||
#define PG_uncached 20 /* Page has been mapped as uncached */
|
||||
|
||||
/*
|
||||
* Global page accounting. One instance per CPU. Only unsigned longs are
|
||||
@@ -317,6 +331,10 @@ extern void __mod_page_state_offset(unsigned long offset, unsigned long delta);
|
||||
#define SetPageNosaveFree(page) set_bit(PG_nosave_free, &(page)->flags)
|
||||
#define ClearPageNosaveFree(page) clear_bit(PG_nosave_free, &(page)->flags)
|
||||
|
||||
#define PageBuddy(page) test_bit(PG_buddy, &(page)->flags)
|
||||
#define __SetPageBuddy(page) __set_bit(PG_buddy, &(page)->flags)
|
||||
#define __ClearPageBuddy(page) __clear_bit(PG_buddy, &(page)->flags)
|
||||
|
||||
#define PageMappedToDisk(page) test_bit(PG_mappedtodisk, &(page)->flags)
|
||||
#define SetPageMappedToDisk(page) set_bit(PG_mappedtodisk, &(page)->flags)
|
||||
#define ClearPageMappedToDisk(page) clear_bit(PG_mappedtodisk, &(page)->flags)
|
||||
|
@@ -36,27 +36,19 @@ struct pipe_inode_info {
|
||||
unsigned int w_counter;
|
||||
struct fasync_struct *fasync_readers;
|
||||
struct fasync_struct *fasync_writers;
|
||||
struct inode *inode;
|
||||
};
|
||||
|
||||
/* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
|
||||
memory allocation, whereas PIPE_BUF makes atomicity guarantees. */
|
||||
#define PIPE_SIZE PAGE_SIZE
|
||||
|
||||
#define PIPE_MUTEX(inode) (&(inode).i_mutex)
|
||||
#define PIPE_WAIT(inode) (&(inode).i_pipe->wait)
|
||||
#define PIPE_READERS(inode) ((inode).i_pipe->readers)
|
||||
#define PIPE_WRITERS(inode) ((inode).i_pipe->writers)
|
||||
#define PIPE_WAITING_WRITERS(inode) ((inode).i_pipe->waiting_writers)
|
||||
#define PIPE_RCOUNTER(inode) ((inode).i_pipe->r_counter)
|
||||
#define PIPE_WCOUNTER(inode) ((inode).i_pipe->w_counter)
|
||||
#define PIPE_FASYNC_READERS(inode) (&((inode).i_pipe->fasync_readers))
|
||||
#define PIPE_FASYNC_WRITERS(inode) (&((inode).i_pipe->fasync_writers))
|
||||
|
||||
/* Drop the inode semaphore and wait for a pipe event, atomically */
|
||||
void pipe_wait(struct inode * inode);
|
||||
void pipe_wait(struct pipe_inode_info *pipe);
|
||||
|
||||
struct inode* pipe_new(struct inode* inode);
|
||||
void free_pipe_info(struct inode* inode);
|
||||
struct pipe_inode_info * alloc_pipe_info(struct inode * inode);
|
||||
void free_pipe_info(struct inode * inode);
|
||||
void __free_pipe_info(struct pipe_inode_info *);
|
||||
|
||||
/*
|
||||
* splice is tied to pipes as a transport (at least for now), so we'll just
|
||||
|
@@ -79,7 +79,7 @@ struct kcore_list {
|
||||
struct vmcore {
|
||||
struct list_head list;
|
||||
unsigned long long paddr;
|
||||
unsigned long size;
|
||||
unsigned long long size;
|
||||
loff_t offset;
|
||||
};
|
||||
|
||||
|
@@ -227,8 +227,8 @@ struct mdp_superblock_1 {
|
||||
*/
|
||||
|
||||
/* These are only valid with feature bit '4' */
|
||||
__u64 reshape_position; /* next address in array-space for reshape */
|
||||
__u32 new_level; /* new level we are reshaping to */
|
||||
__u64 reshape_position; /* next address in array-space for reshape */
|
||||
__u32 delta_disks; /* change in number of raid_disks */
|
||||
__u32 new_layout; /* new layout */
|
||||
__u32 new_chunk; /* new chunk size (bytes) */
|
||||
|
@@ -684,6 +684,7 @@ static inline void prefetch_stack(struct task_struct *t) { }
|
||||
|
||||
struct audit_context; /* See audit.c */
|
||||
struct mempolicy;
|
||||
struct pipe_inode_info;
|
||||
|
||||
enum sleep_type {
|
||||
SLEEP_NORMAL,
|
||||
@@ -882,6 +883,11 @@ struct task_struct {
|
||||
|
||||
atomic_t fs_excl; /* holding fs exclusive resources */
|
||||
struct rcu_head rcu;
|
||||
|
||||
/*
|
||||
* cache last used pipe for splice
|
||||
*/
|
||||
struct pipe_inode_info *splice_pipe;
|
||||
};
|
||||
|
||||
static inline pid_t process_group(struct task_struct *tsk)
|
||||
@@ -1203,9 +1209,10 @@ extern void wait_task_inactive(task_t * p);
|
||||
#define while_each_thread(g, t) \
|
||||
while ((t = next_thread(t)) != g)
|
||||
|
||||
#define thread_group_leader(p) (p->pid == p->tgid)
|
||||
/* de_thread depends on thread_group_leader not being a pid based check */
|
||||
#define thread_group_leader(p) (p == p->group_leader)
|
||||
|
||||
static inline task_t *next_thread(task_t *p)
|
||||
static inline task_t *next_thread(const task_t *p)
|
||||
{
|
||||
return list_entry(rcu_dereference(p->thread_group.next),
|
||||
task_t, thread_group);
|
||||
|
@@ -41,7 +41,8 @@ struct screen_info {
|
||||
u16 vesapm_off; /* 0x30 */
|
||||
u16 pages; /* 0x32 */
|
||||
u16 vesa_attributes; /* 0x34 */
|
||||
/* 0x36 -- 0x3f reserved for future expansion */
|
||||
u32 capabilities; /* 0x36 */
|
||||
/* 0x3a -- 0x3f reserved for future expansion */
|
||||
};
|
||||
|
||||
extern struct screen_info screen_info;
|
||||
|
@@ -73,7 +73,7 @@ static inline int write_tryseqlock(seqlock_t *sl)
|
||||
}
|
||||
|
||||
/* Start of read calculation -- fetch last complete writer token */
|
||||
static inline unsigned read_seqbegin(const seqlock_t *sl)
|
||||
static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
|
||||
{
|
||||
unsigned ret = sl->sequence;
|
||||
smp_rmb();
|
||||
@@ -88,7 +88,7 @@ static inline unsigned read_seqbegin(const seqlock_t *sl)
|
||||
*
|
||||
* Using xor saves one conditional branch.
|
||||
*/
|
||||
static inline int read_seqretry(const seqlock_t *sl, unsigned iv)
|
||||
static __always_inline int read_seqretry(const seqlock_t *sl, unsigned iv)
|
||||
{
|
||||
smp_rmb();
|
||||
return (iv & 1) | (sl->sequence ^ iv);
|
||||
|
@@ -13,11 +13,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char * strpbrk(const char *,const char *);
|
||||
extern char * strsep(char **,const char *);
|
||||
extern __kernel_size_t strspn(const char *,const char *);
|
||||
extern __kernel_size_t strcspn(const char *,const char *);
|
||||
|
||||
extern char *strndup_user(const char __user *, long);
|
||||
|
||||
/*
|
||||
@@ -70,6 +65,18 @@ extern __kernel_size_t strlen(const char *);
|
||||
#ifndef __HAVE_ARCH_STRNLEN
|
||||
extern __kernel_size_t strnlen(const char *,__kernel_size_t);
|
||||
#endif
|
||||
#ifndef __HAVE_ARCH_STRPBRK
|
||||
extern char * strpbrk(const char *,const char *);
|
||||
#endif
|
||||
#ifndef __HAVE_ARCH_STRSEP
|
||||
extern char * strsep(char **,const char *);
|
||||
#endif
|
||||
#ifndef __HAVE_ARCH_STRSPN
|
||||
extern __kernel_size_t strspn(const char *,const char *);
|
||||
#endif
|
||||
#ifndef __HAVE_ARCH_STRCSPN
|
||||
extern __kernel_size_t strcspn(const char *,const char *);
|
||||
#endif
|
||||
|
||||
#ifndef __HAVE_ARCH_MEMSET
|
||||
extern void * memset(void *,int,__kernel_size_t);
|
||||
|
@@ -197,15 +197,16 @@ svc_take_res_page(struct svc_rqst *rqstp)
|
||||
return rqstp->rq_respages[rqstp->rq_resused++];
|
||||
}
|
||||
|
||||
static inline int svc_take_page(struct svc_rqst *rqstp)
|
||||
static inline void svc_take_page(struct svc_rqst *rqstp)
|
||||
{
|
||||
if (rqstp->rq_arghi <= rqstp->rq_argused)
|
||||
return -ENOMEM;
|
||||
if (rqstp->rq_arghi <= rqstp->rq_argused) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
rqstp->rq_arghi--;
|
||||
rqstp->rq_respages[rqstp->rq_resused] =
|
||||
rqstp->rq_argpages[rqstp->rq_arghi];
|
||||
rqstp->rq_resused++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void svc_pushback_allpages(struct svc_rqst *rqstp)
|
||||
|
@@ -155,6 +155,7 @@ extern void swapin_readahead(swp_entry_t, unsigned long, struct vm_area_struct *
|
||||
/* linux/mm/page_alloc.c */
|
||||
extern unsigned long totalram_pages;
|
||||
extern unsigned long totalhigh_pages;
|
||||
extern unsigned long totalreserve_pages;
|
||||
extern long nr_swap_pages;
|
||||
extern unsigned int nr_free_pages(void);
|
||||
extern unsigned int nr_free_pages_pgdat(pg_data_t *pgdat);
|
||||
|
@@ -569,9 +569,12 @@ asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
|
||||
asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
|
||||
int flags, int mode);
|
||||
asmlinkage long sys_unshare(unsigned long unshare_flags);
|
||||
asmlinkage long sys_splice(int fdin, int fdout, size_t len,
|
||||
unsigned int flags);
|
||||
|
||||
asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
|
||||
int fd_out, loff_t __user *off_out,
|
||||
size_t len, unsigned int flags);
|
||||
|
||||
asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
|
||||
int flags);
|
||||
unsigned int flags);
|
||||
|
||||
#endif
|
||||
|
@@ -6,9 +6,10 @@ extern int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *c
|
||||
extern int tty_insert_flip_string_flags(struct tty_struct *tty, const unsigned char *chars, const char *flags, size_t size);
|
||||
extern int tty_prepare_flip_string(struct tty_struct *tty, unsigned char **chars, size_t size);
|
||||
extern int tty_prepare_flip_string_flags(struct tty_struct *tty, unsigned char **chars, char **flags, size_t size);
|
||||
void tty_schedule_flip(struct tty_struct *tty);
|
||||
|
||||
static inline int tty_insert_flip_char(struct tty_struct *tty,
|
||||
unsigned char ch, char flag)
|
||||
unsigned char ch, char flag)
|
||||
{
|
||||
struct tty_buffer *tb = tty->buf.tail;
|
||||
if (tb && tb->active && tb->used < tb->size) {
|
||||
@@ -19,26 +20,4 @@ static inline int tty_insert_flip_char(struct tty_struct *tty,
|
||||
return tty_insert_flip_string_flags(tty, &ch, &flag, 1);
|
||||
}
|
||||
|
||||
static inline void tty_schedule_flip(struct tty_struct *tty)
|
||||
{
|
||||
unsigned long flags;
|
||||
spin_lock_irqsave(&tty->buf.lock, flags);
|
||||
if (tty->buf.tail != NULL) {
|
||||
tty->buf.tail->active = 0;
|
||||
tty->buf.tail->commit = tty->buf.tail->used;
|
||||
}
|
||||
spin_unlock_irqrestore(&tty->buf.lock, flags);
|
||||
schedule_delayed_work(&tty->buf.work, 1);
|
||||
}
|
||||
|
||||
#undef _INLINE_
|
||||
|
||||
|
||||
#endif /* _LINUX_TTY_FLIP_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -12,6 +12,11 @@
|
||||
#else
|
||||
#define MODULE_VERMAGIC_PREEMPT ""
|
||||
#endif
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
|
||||
#else
|
||||
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
|
||||
#endif
|
||||
#ifndef MODULE_ARCH_VERMAGIC
|
||||
#define MODULE_ARCH_VERMAGIC ""
|
||||
#endif
|
||||
@@ -19,5 +24,5 @@
|
||||
#define VERMAGIC_STRING \
|
||||
UTS_RELEASE " " \
|
||||
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
|
||||
MODULE_ARCH_VERMAGIC \
|
||||
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_ARCH_VERMAGIC \
|
||||
"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
|
||||
|
Reference in New Issue
Block a user