OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [net/] [ipv4/] [udplite.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *  UDPLITE     An implementation of the UDP-Lite protocol (RFC 3828).
3
 *
4
 *  Version:    $Id: udplite.c,v 1.25 2006/10/19 07:22:36 gerrit Exp $
5
 *
6
 *  Authors:    Gerrit Renker       <gerrit@erg.abdn.ac.uk>
7
 *
8
 *  Changes:
9
 *  Fixes:
10
 *              This program is free software; you can redistribute it and/or
11
 *              modify it under the terms of the GNU General Public License
12
 *              as published by the Free Software Foundation; either version
13
 *              2 of the License, or (at your option) any later version.
14
 */
15
#include "udp_impl.h"
16
DEFINE_SNMP_STAT(struct udp_mib, udplite_statistics)    __read_mostly;
17
 
18
struct hlist_head       udplite_hash[UDP_HTABLE_SIZE];
19
 
20
int udplite_get_port(struct sock *sk, unsigned short p,
21
                     int (*c)(const struct sock *, const struct sock *))
22
{
23
        return  __udp_lib_get_port(sk, p, udplite_hash, c);
24
}
25
 
26
static int udplite_v4_get_port(struct sock *sk, unsigned short snum)
27
{
28
        return udplite_get_port(sk, snum, ipv4_rcv_saddr_equal);
29
}
30
 
31
static int udplite_rcv(struct sk_buff *skb)
32
{
33
        return __udp4_lib_rcv(skb, udplite_hash, IPPROTO_UDPLITE);
34
}
35
 
36
static void udplite_err(struct sk_buff *skb, u32 info)
37
{
38
        return __udp4_lib_err(skb, info, udplite_hash);
39
}
40
 
41
static  struct net_protocol udplite_protocol = {
42
        .handler        = udplite_rcv,
43
        .err_handler    = udplite_err,
44
        .no_policy      = 1,
45
};
46
 
47
DEFINE_PROTO_INUSE(udplite)
48
 
49
struct proto    udplite_prot = {
50
        .name              = "UDP-Lite",
51
        .owner             = THIS_MODULE,
52
        .close             = udp_lib_close,
53
        .connect           = ip4_datagram_connect,
54
        .disconnect        = udp_disconnect,
55
        .ioctl             = udp_ioctl,
56
        .init              = udplite_sk_init,
57
        .destroy           = udp_destroy_sock,
58
        .setsockopt        = udp_setsockopt,
59
        .getsockopt        = udp_getsockopt,
60
        .sendmsg           = udp_sendmsg,
61
        .recvmsg           = udp_recvmsg,
62
        .sendpage          = udp_sendpage,
63
        .backlog_rcv       = udp_queue_rcv_skb,
64
        .hash              = udp_lib_hash,
65
        .unhash            = udp_lib_unhash,
66
        .get_port          = udplite_v4_get_port,
67
        .obj_size          = sizeof(struct udp_sock),
68
#ifdef CONFIG_COMPAT
69
        .compat_setsockopt = compat_udp_setsockopt,
70
        .compat_getsockopt = compat_udp_getsockopt,
71
#endif
72
        REF_PROTO_INUSE(udplite)
73
};
74
 
75
static struct inet_protosw udplite4_protosw = {
76
        .type           =  SOCK_DGRAM,
77
        .protocol       =  IPPROTO_UDPLITE,
78
        .prot           =  &udplite_prot,
79
        .ops            =  &inet_dgram_ops,
80
        .capability     = -1,
81
        .no_check       =  0,            /* must checksum (RFC 3828) */
82
        .flags          =  INET_PROTOSW_PERMANENT,
83
};
84
 
85
#ifdef CONFIG_PROC_FS
86
static struct file_operations udplite4_seq_fops;
87
static struct udp_seq_afinfo udplite4_seq_afinfo = {
88
        .owner          = THIS_MODULE,
89
        .name           = "udplite",
90
        .family         = AF_INET,
91
        .hashtable      = udplite_hash,
92
        .seq_show       = udp4_seq_show,
93
        .seq_fops       = &udplite4_seq_fops,
94
};
95
#endif
96
 
97
void __init udplite4_register(void)
98
{
99
        if (proto_register(&udplite_prot, 1))
100
                goto out_register_err;
101
 
102
        if (inet_add_protocol(&udplite_protocol, IPPROTO_UDPLITE) < 0)
103
                goto out_unregister_proto;
104
 
105
        inet_register_protosw(&udplite4_protosw);
106
 
107
#ifdef CONFIG_PROC_FS
108
        if (udp_proc_register(&udplite4_seq_afinfo)) /* udplite4_proc_init() */
109
                printk(KERN_ERR "%s: Cannot register /proc!\n", __FUNCTION__);
110
#endif
111
        return;
112
 
113
out_unregister_proto:
114
        proto_unregister(&udplite_prot);
115
out_register_err:
116
        printk(KERN_CRIT "%s: Cannot add UDP-Lite protocol.\n", __FUNCTION__);
117
}
118
 
119
EXPORT_SYMBOL(udplite_hash);
120
EXPORT_SYMBOL(udplite_prot);
121
EXPORT_SYMBOL(udplite_get_port);

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.