1d95bfa3a53a390cbcfb5938621d74279d1c4a9b
[p2p-kernel-protocol.git] / module / p2pkp_sock.h
1 #ifndef _P2PKP_SOCKET_H_
2 #define _P2PKP_SOCKET_H_
3
4 #include <net/sock.h>
5
6 #define P2PKP_DEFAULT_BUF_LEN   8196
7 #define P2PKP_DEFAULT_MODE              0644
8
9 struct p2pkp_conn_info {
10         struct sockaddr_in sin;
11         struct list_head list;
12 };
13
14 struct p2pkp_sock {
15         struct sock sk;
16         spinlock_t conn_lock;
17         struct list_head conn_list;
18         struct socket *net_sock;
19         struct file * file;
20         unsigned int buffer_len;
21         unsigned char buffer[P2PKP_DEFAULT_BUF_LEN];
22         int bind_ifindex;       /* bound interface index; 0 for any interface */
23         __be16 bind_port;       /* bound port; 0 for unbound socks*/
24         __be16 rem_port;        /* remote port; 0 for unconnected socks */
25 };
26
27 /* P2PKP protocol name; used as identifier in /proc/net/protocols */
28 #define P2PKP_PROTO_NAME        "P2PKP"
29
30
31 /* converts a sock to a p2pkp_sock */
32 #define sock2p2pkp(sock) ((struct p2pkp_sock *)(sock))
33 /* converts a p2pkp_sock to a sock */
34 #define p2pkp2sock(ps) ((struct sock *)(ps))
35
36 /* converts a sockaddr to a sockaddr_p2pkp */
37 #define sockaddr2p2pkp(sa) ((struct sockaddr_p2pkp *)(sa))
38 /* converts a socaddr_p2pkp to a sockaddr */
39 #define p2pkp2sockaddr(ps) ((struct sockaddr *)(ps))
40
41 int p2pkp_register_protocol(void);
42 void p2pkp_unregister_protocol(void);
43
44 #endif /* _P2PKP_SOCKET_H_ */