#include <net/inet_common.h> #include <net/tcp_states.h> #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) #include <net/mip6.h> #endif #include <linux/mroute6.h> #include <net/raw.h> #include <net/rawv6.h> #include <net/xfrm.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> static struct raw_hashinfo raw_v6_hashinfo = { .lock = __RW_LOCK_UNLOCKED(raw_v6_hashinfo.lock), }; static struct sock *__raw_v6_lookup(struct net *net, struct sock *sk, unsigned short num, struct in6_addr *loc_addr, struct in6_addr *rmt_addr, int dif) { struct hlist_node *node; int is_multicast = ipv6_addr_is_multicast(loc_addr); sk_for_each_from(sk, node) if (inet_sk(sk)->inet_num == num) { struct ipv6_pinfo *np = inet6_sk(sk); if (!net_eq(sock_net(sk), net)) continue;
static int __init ksb_init(void) { struct ks_bridge *ksb; int num_instances = 0; int ret = 0; int i; dbg_dir = debugfs_create_dir("ks_bridge", NULL); if (IS_ERR(dbg_dir)) pr_err("unable to create debug dir"); for (i = 0; i < NO_BRIDGE_INSTANCES; i++) { ksb = kzalloc(sizeof(struct ks_bridge), GFP_KERNEL); if (!ksb) { pr_err("unable to allocat mem for ks_bridge"); ret = -ENOMEM; goto dev_free; } __ksb[i] = ksb; ksb->name = kasprintf(GFP_KERNEL, "ks_bridge:%i", i + 1); if (!ksb->name) { pr_info("unable to allocate name"); kfree(ksb); ret = -ENOMEM; goto dev_free; } spin_lock_init(&ksb->lock); INIT_LIST_HEAD(&ksb->to_mdm_list); INIT_LIST_HEAD(&ksb->to_ks_list); init_waitqueue_head(&ksb->ks_wait_q); init_waitqueue_head(&ksb->pending_urb_wait); ksb->wq = create_singlethread_workqueue(ksb->name); if (!ksb->wq) { pr_err("unable to allocate workqueue"); kfree(ksb->name); kfree(ksb); ret = -ENOMEM; goto dev_free; } INIT_WORK(&ksb->to_mdm_work, ksb_tomdm_work); INIT_WORK(&ksb->start_rx_work, ksb_start_rx_work); init_usb_anchor(&ksb->submitted); ksb->dbg_idx = 0; ksb->dbg_lock = __RW_LOCK_UNLOCKED(lck); if (!IS_ERR(dbg_dir)) debugfs_create_file(ksb->name, S_IRUGO, dbg_dir, ksb, &dbg_fops); num_instances++; } ret = usb_register(&ksb_usb_driver); if (ret) { pr_err("unable to register ks bridge driver"); goto dev_free; } pr_info("init done"); return 0; dev_free: if (!IS_ERR(dbg_dir)) debugfs_remove_recursive(dbg_dir); for (i = 0; i < num_instances; i++) { ksb = __ksb[i]; destroy_workqueue(ksb->wq); kfree(ksb->name); kfree(ksb); } return ret; }
[NF_INET_FORWARD] = sizeof(struct ipt_standard), [NF_INET_LOCAL_OUT] = sizeof(struct ipt_standard) * 2, }, }, .entries = { IPT_STANDARD_INIT(NF_ACCEPT), /* LOCAL_IN */ IPT_STANDARD_INIT(NF_ACCEPT), /* FORWARD */ IPT_STANDARD_INIT(NF_ACCEPT), /* LOCAL_OUT */ }, .term = IPT_ERROR_INIT, /* ERROR */ }; static struct xt_table security_table = { .name = "security", .valid_hooks = SECURITY_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(security_table.lock), .me = THIS_MODULE, .af = AF_INET, }; static unsigned int ipt_local_in_hook(unsigned int hook, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { return ipt_do_table(skb, hook, in, out, dev_net(in)->ipv4.iptable_security); }
[NF_INET_FORWARD] = sizeof(struct ip6t_standard), [NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard) * 2 }, }, .entries = { IP6T_STANDARD_INIT(NF_ACCEPT), /* LOCAL_IN */ IP6T_STANDARD_INIT(NF_ACCEPT), /* FORWARD */ IP6T_STANDARD_INIT(NF_ACCEPT), /* LOCAL_OUT */ }, .term = IP6T_ERROR_INIT, /* ERROR */ }; static struct xt_table packet_filter = { .name = "filter", .valid_hooks = FILTER_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(packet_filter.lock), .me = THIS_MODULE, .af = AF_INET6, }; /* The work comes in here from netfilter.c. */ static unsigned int ip6t_in_hook(unsigned int hook, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { return ip6t_do_table(skb, hook, in, out, dev_net(in)->ipv6.ip6table_filter); }
*/ static const struct address_space_operations swap_aops = { .writepage = swap_writepage, .sync_page = block_sync_page, .set_page_dirty = __set_page_dirty_nobuffers, .migratepage = migrate_page, }; static struct backing_dev_info swap_backing_dev_info = { .capabilities = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK, .unplug_io_fn = swap_unplug_io_fn, }; struct address_space swapper_space = { .page_tree = RADIX_TREE_INIT(GFP_ATOMIC|__GFP_NOWARN), .tree_lock = __RW_LOCK_UNLOCKED(swapper_space.tree_lock), .a_ops = &swap_aops, .i_mmap_nonlinear = LIST_HEAD_INIT(swapper_space.i_mmap_nonlinear), .backing_dev_info = &swap_backing_dev_info, }; #define INC_CACHE_INFO(x) do { swap_cache_info.x++; } while (0) static struct { unsigned long add_total; unsigned long del_total; unsigned long find_success; unsigned long find_total; unsigned long noent_race; unsigned long exist_race; } swap_cache_info;
[NF_INET_POST_ROUTING] = sizeof(struct ipt_standard), [NF_INET_LOCAL_OUT] = sizeof(struct ipt_standard) * 2 }, }, .entries = { IPT_STANDARD_INIT(NF_ACCEPT), /* PRE_ROUTING */ IPT_STANDARD_INIT(NF_ACCEPT), /* POST_ROUTING */ IPT_STANDARD_INIT(NF_ACCEPT), /* LOCAL_OUT */ }, .term = IPT_ERROR_INIT, /* ERROR */ }; static struct xt_table nat_table = { .name = "nat", .valid_hooks = NAT_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(nat_table.lock), .me = THIS_MODULE, .af = AF_INET, }; /* Source NAT */ static unsigned int ipt_snat_target(struct sk_buff *skb, const struct xt_target_param *par) { struct nf_conn *ct; enum ip_conntrack_info ctinfo; const struct nf_nat_multi_range_compat *mr = par->targinfo; NF_CT_ASSERT(par->hooknum == NF_INET_POST_ROUTING); ct = nf_ct_get(skb, &ctinfo);
} /* * Open and Close */ #define FIRST_CMINOR 0 #define LAST_CMINOR 0 #define FREE_CMINOR 1 STATIC int ssys_majors[CMAJORS] = { CMAJOR_0, }; STATIC struct ssys *socksys_opens = NULL; #if defined DEFINE_RWLOCK STATIC DEFINE_RWLOCK(socksys_lock); #elif defined __RW_LOCK_UNLOCKED STATIC rwlock_t socksys_lock = __RW_LOCK_UNLOCKED(socksys_lock); #elif defined RW_LOCK_UNLOCKED STATIC rwlock_t socksys_lock = RW_LOCK_UNLOCKED; #else #error cannot initialize read-write locks #endif /** * socksys_qopen - SOCKSYS driver STREAMS open routine * @q: read queue of opened Stream * @devp: pointer to device number opened * @oflag: flags to the open call * @sflag: STREAMS flag: DRVOPEN, MODOPEN or CLONEOPEN * @crp: pointer to opener's credentials */ STATIC streamscall int
* You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 * Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * TODO: * -- add socket/connection options adjusting to change client QoS */ #include "tempesta_fw.h" #include "classifier.h" #include "log.h" static TfwClassifier *classifier = NULL; static rwlock_t tfw_class_lock = __RW_LOCK_UNLOCKED(tfw_class_lock); /** * Shrink client connections hash and/or reduce QoS for blocked clients to * lower back-end servers or local system load. */ void tfw_classify_shrink(void) { /* TODO: delete a connection from the LRU */ } int tfw_classify_ipv4(struct sk_buff *skb) { return (classifier && classifier->classify_ipv4)
#include <linux/proc_fs.h> #include <linux/seq_file.h> int sysctl_tcp_tw_reuse; int sysctl_tcp_low_latency; /* Check TCP sequence numbers in ICMP packets. */ #define ICMP_MIN_LENGTH 8 /* Socket used for sending RSTs */ static struct socket *tcp_socket; void tcp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb); struct inet_hashinfo __cacheline_aligned tcp_hashinfo = { .lhash_lock = __RW_LOCK_UNLOCKED(tcp_hashinfo.lhash_lock), .lhash_users = ATOMIC_INIT(0), .lhash_wait = __WAIT_QUEUE_HEAD_INITIALIZER(tcp_hashinfo.lhash_wait), }; static int tcp_v4_get_port(struct sock *sk, unsigned short snum) { return inet_csk_get_port(&tcp_hashinfo, sk, snum, inet_csk_bind_conflict); } static void tcp_v4_hash(struct sock *sk) { inet_hash(&tcp_hashinfo, sk); }
.underflow = { [NF_INET_PRE_ROUTING] = 0, [NF_INET_LOCAL_OUT] = sizeof(struct ipt_standard) }, }, .entries = { IPT_STANDARD_INIT(NF_ACCEPT), /* PRE_ROUTING */ IPT_STANDARD_INIT(NF_ACCEPT), /* LOCAL_OUT */ }, .term = IPT_ERROR_INIT, /* ERROR */ }; static struct xt_table packet_raw = { .name = "raw", .valid_hooks = RAW_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(packet_raw.lock), .me = THIS_MODULE, .af = AF_INET, }; /* The work comes in here from netfilter.c. */ static unsigned int ipt_hook(unsigned int hook, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { return ipt_do_table(skb, hook, in, out, dev_net(in)->ipv4.iptable_raw); }
}, }, .entries = { IP6T_STANDARD_INIT(NF_ACCEPT), /* PRE_ROUTING */ IP6T_STANDARD_INIT(NF_ACCEPT), /* LOCAL_IN */ IP6T_STANDARD_INIT(NF_ACCEPT), /* FORWARD */ IP6T_STANDARD_INIT(NF_ACCEPT), /* LOCAL_OUT */ IP6T_STANDARD_INIT(NF_ACCEPT), /* POST_ROUTING */ }, .term = IP6T_ERROR_INIT, /* ERROR */ }; static struct xt_table packet_mangler = { .name = "mangle", .valid_hooks = MANGLE_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(packet_mangler.lock), .me = THIS_MODULE, .af = AF_INET6, }; /* The work comes in here from netfilter.c. */ static unsigned int ip6t_route_hook(unsigned int hook, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { return ip6t_do_table(skb, hook, in, out, init_net.ipv6.ip6table_mangle); }
/* xhci dbg logging */ static unsigned int enable_payload_log = 1; module_param(enable_payload_log, uint, S_IRUGO | S_IWUSR); static unsigned int enable_dbg_log = 1; module_param(enable_dbg_log, uint, S_IRUGO | S_IWUSR); /* select EPs to log events using this parameter; by default set to ep0 */ static unsigned int ep_addr_rxdbg_mask = 1; module_param(ep_addr_rxdbg_mask, uint, S_IRUGO | S_IWUSR); static unsigned int ep_addr_txdbg_mask = 1; module_param(ep_addr_txdbg_mask, uint, S_IRUGO | S_IWUSR); static struct dbg_data dbg_hsic = { .ctrl_idx = 0, .ctrl_lck = __RW_LOCK_UNLOCKED(clck), .data_idx = 0, .data_lck = __RW_LOCK_UNLOCKED(dlck) }; static void xhci_hsic_log_urb(struct urb *urb, char *event, unsigned extra) { xhci_dbg_log_event(&dbg_hsic, urb, event, extra); } static inline struct mxhci_hsic_hcd *hcd_to_hsic(struct usb_hcd *hcd) { return (struct mxhci_hsic_hcd *) (hcd->hcd_priv); } static inline struct usb_hcd *hsic_to_hcd(struct mxhci_hsic_hcd *mxhci)
* -------- * *************************************************************************/ #include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h> #include <asm/uaccess.h> #include "common.h" #include "ser_device.h" #include "ser_path.h" static int g_major_dec_num = 0; /* Major number assigned to the device driver */ static int g_device_counter = 0; static rwlock_t g_ser_device_lock = __RW_LOCK_UNLOCKED(g_ser_device_lock); //*********************************************************************** //*********************************************************************** // Called when a process writes to dev file: echo "hi" > /dev/sereadmo static ssize_t dev_device_write(struct file *filp, const char *buffer, size_t length, loff_t *off) { struct dev_tc_token token; int token_size = sizeof(struct dev_tc_token); int size = length; const char* buff = buffer;
.entries = (char *)initial_chains, }; static int check(const struct ebt_table_info *info, unsigned int valid_hooks) { if (valid_hooks & ~NAT_VALID_HOOKS) return -EINVAL; return 0; } static struct ebt_table frame_nat = { .name = "nat", .table = &initial_table, .valid_hooks = NAT_VALID_HOOKS, .lock = __RW_LOCK_UNLOCKED(frame_nat.lock), .check = check, .me = THIS_MODULE, }; static unsigned int ebt_nat_in(unsigned int hook, struct sk_buff *skb, const struct net_device *in , const struct net_device *out, int (*okfn)(struct sk_buff *)) { return ebt_do_table(hook, skb, in, out, dev_net(in)->xt.frame_nat); } static unsigned int ebt_nat_out(unsigned int hook, struct sk_buff *skb, const struct net_device *in , const struct net_device *out, int (*okfn)(struct sk_buff *)) {