Loading include/net/ping.h +0 −11 Original line number Diff line number Diff line Loading @@ -83,20 +83,9 @@ int ping_queue_rcv_skb(struct sock *sk, struct sk_buff *skb); bool ping_rcv(struct sk_buff *skb); #ifdef CONFIG_PROC_FS struct ping_seq_afinfo { char *name; sa_family_t family; const struct file_operations *seq_fops; const struct seq_operations seq_ops; }; extern const struct file_operations ping_seq_fops; void *ping_seq_start(struct seq_file *seq, loff_t *pos, sa_family_t family); void *ping_seq_next(struct seq_file *seq, void *v, loff_t *pos); void ping_seq_stop(struct seq_file *seq, void *v); int ping_proc_register(struct net *net, struct ping_seq_afinfo *afinfo); void ping_proc_unregister(struct net *net, struct ping_seq_afinfo *afinfo); int __init ping_proc_init(void); void ping_proc_exit(void); Loading net/ipv4/ping.c +14 −36 Original line number Diff line number Diff line Loading @@ -1150,58 +1150,36 @@ static int ping_v4_seq_show(struct seq_file *seq, void *v) return 0; } static int ping_seq_open(struct inode *inode, struct file *file) { struct ping_seq_afinfo *afinfo = PDE_DATA(inode); return seq_open_net(inode, file, &afinfo->seq_ops, sizeof(struct ping_iter_state)); } const struct file_operations ping_seq_fops = { .open = ping_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; EXPORT_SYMBOL_GPL(ping_seq_fops); static struct ping_seq_afinfo ping_v4_seq_afinfo = { .name = "icmp", .family = AF_INET, .seq_fops = &ping_seq_fops, .seq_ops = { static const struct seq_operations ping_v4_seq_ops = { .start = ping_v4_seq_start, .show = ping_v4_seq_show, .next = ping_seq_next, .stop = ping_seq_stop, }, }; int ping_proc_register(struct net *net, struct ping_seq_afinfo *afinfo) static int ping_v4_seq_open(struct inode *inode, struct file *file) { struct proc_dir_entry *p; p = proc_create_data(afinfo->name, 0444, net->proc_net, afinfo->seq_fops, afinfo); if (!p) return -ENOMEM; return 0; return seq_open_net(inode, file, &ping_v4_seq_ops, sizeof(struct ping_iter_state)); } EXPORT_SYMBOL_GPL(ping_proc_register); void ping_proc_unregister(struct net *net, struct ping_seq_afinfo *afinfo) { remove_proc_entry(afinfo->name, net->proc_net); } EXPORT_SYMBOL_GPL(ping_proc_unregister); const struct file_operations ping_v4_seq_fops = { .open = ping_v4_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; static int __net_init ping_v4_proc_init_net(struct net *net) { return ping_proc_register(net, &ping_v4_seq_afinfo); if (!proc_create("icmp", 0444, net->proc_net, &ping_v4_seq_fops)) return -ENOMEM; return 0; } static void __net_exit ping_v4_proc_exit_net(struct net *net) { ping_proc_unregister(net, &ping_v4_seq_afinfo); remove_proc_entry("icmp", net->proc_net); } static struct pernet_operations ping_v4_net_ops = { Loading net/ipv6/ping.c +23 −12 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <net/protocol.h> #include <net/udp.h> #include <net/transp_v6.h> #include <linux/proc_fs.h> #include <net/ping.h> /* Compatibility glue so we can support IPv6 when it's compiled as a module */ Loading Loading @@ -215,26 +216,36 @@ static int ping_v6_seq_show(struct seq_file *seq, void *v) return 0; } static struct ping_seq_afinfo ping_v6_seq_afinfo = { .name = "icmp6", .family = AF_INET6, .seq_fops = &ping_seq_fops, .seq_ops = { static const struct seq_operations ping_v6_seq_ops = { .start = ping_v6_seq_start, .show = ping_v6_seq_show, .next = ping_seq_next, .stop = ping_seq_stop, }, }; static int ping_v6_seq_open(struct inode *inode, struct file *file) { return seq_open_net(inode, file, &ping_v6_seq_ops, sizeof(struct ping_iter_state)); } const struct file_operations ping_v6_seq_fops = { .open = ping_v6_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; static int __net_init ping_v6_proc_init_net(struct net *net) { return ping_proc_register(net, &ping_v6_seq_afinfo); if (!proc_create("icmp6", 0444, net->proc_net, &ping_v6_seq_fops)) return -ENOMEM; return 0; } static void __net_init ping_v6_proc_exit_net(struct net *net) { return ping_proc_unregister(net, &ping_v6_seq_afinfo); remove_proc_entry("icmp6", net->proc_net); } static struct pernet_operations ping_v6_net_ops = { Loading Loading
include/net/ping.h +0 −11 Original line number Diff line number Diff line Loading @@ -83,20 +83,9 @@ int ping_queue_rcv_skb(struct sock *sk, struct sk_buff *skb); bool ping_rcv(struct sk_buff *skb); #ifdef CONFIG_PROC_FS struct ping_seq_afinfo { char *name; sa_family_t family; const struct file_operations *seq_fops; const struct seq_operations seq_ops; }; extern const struct file_operations ping_seq_fops; void *ping_seq_start(struct seq_file *seq, loff_t *pos, sa_family_t family); void *ping_seq_next(struct seq_file *seq, void *v, loff_t *pos); void ping_seq_stop(struct seq_file *seq, void *v); int ping_proc_register(struct net *net, struct ping_seq_afinfo *afinfo); void ping_proc_unregister(struct net *net, struct ping_seq_afinfo *afinfo); int __init ping_proc_init(void); void ping_proc_exit(void); Loading
net/ipv4/ping.c +14 −36 Original line number Diff line number Diff line Loading @@ -1150,58 +1150,36 @@ static int ping_v4_seq_show(struct seq_file *seq, void *v) return 0; } static int ping_seq_open(struct inode *inode, struct file *file) { struct ping_seq_afinfo *afinfo = PDE_DATA(inode); return seq_open_net(inode, file, &afinfo->seq_ops, sizeof(struct ping_iter_state)); } const struct file_operations ping_seq_fops = { .open = ping_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; EXPORT_SYMBOL_GPL(ping_seq_fops); static struct ping_seq_afinfo ping_v4_seq_afinfo = { .name = "icmp", .family = AF_INET, .seq_fops = &ping_seq_fops, .seq_ops = { static const struct seq_operations ping_v4_seq_ops = { .start = ping_v4_seq_start, .show = ping_v4_seq_show, .next = ping_seq_next, .stop = ping_seq_stop, }, }; int ping_proc_register(struct net *net, struct ping_seq_afinfo *afinfo) static int ping_v4_seq_open(struct inode *inode, struct file *file) { struct proc_dir_entry *p; p = proc_create_data(afinfo->name, 0444, net->proc_net, afinfo->seq_fops, afinfo); if (!p) return -ENOMEM; return 0; return seq_open_net(inode, file, &ping_v4_seq_ops, sizeof(struct ping_iter_state)); } EXPORT_SYMBOL_GPL(ping_proc_register); void ping_proc_unregister(struct net *net, struct ping_seq_afinfo *afinfo) { remove_proc_entry(afinfo->name, net->proc_net); } EXPORT_SYMBOL_GPL(ping_proc_unregister); const struct file_operations ping_v4_seq_fops = { .open = ping_v4_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; static int __net_init ping_v4_proc_init_net(struct net *net) { return ping_proc_register(net, &ping_v4_seq_afinfo); if (!proc_create("icmp", 0444, net->proc_net, &ping_v4_seq_fops)) return -ENOMEM; return 0; } static void __net_exit ping_v4_proc_exit_net(struct net *net) { ping_proc_unregister(net, &ping_v4_seq_afinfo); remove_proc_entry("icmp", net->proc_net); } static struct pernet_operations ping_v4_net_ops = { Loading
net/ipv6/ping.c +23 −12 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <net/protocol.h> #include <net/udp.h> #include <net/transp_v6.h> #include <linux/proc_fs.h> #include <net/ping.h> /* Compatibility glue so we can support IPv6 when it's compiled as a module */ Loading Loading @@ -215,26 +216,36 @@ static int ping_v6_seq_show(struct seq_file *seq, void *v) return 0; } static struct ping_seq_afinfo ping_v6_seq_afinfo = { .name = "icmp6", .family = AF_INET6, .seq_fops = &ping_seq_fops, .seq_ops = { static const struct seq_operations ping_v6_seq_ops = { .start = ping_v6_seq_start, .show = ping_v6_seq_show, .next = ping_seq_next, .stop = ping_seq_stop, }, }; static int ping_v6_seq_open(struct inode *inode, struct file *file) { return seq_open_net(inode, file, &ping_v6_seq_ops, sizeof(struct ping_iter_state)); } const struct file_operations ping_v6_seq_fops = { .open = ping_v6_seq_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release_net, }; static int __net_init ping_v6_proc_init_net(struct net *net) { return ping_proc_register(net, &ping_v6_seq_afinfo); if (!proc_create("icmp6", 0444, net->proc_net, &ping_v6_seq_fops)) return -ENOMEM; return 0; } static void __net_init ping_v6_proc_exit_net(struct net *net) { return ping_proc_unregister(net, &ping_v6_seq_afinfo); remove_proc_entry("icmp6", net->proc_net); } static struct pernet_operations ping_v6_net_ops = { Loading