aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/connector.h158
-rw-r--r--include/linux/netlink.h1
-rw-r--r--include/linux/sysctl.h3
-rw-r--r--include/net/ax25.h31
-rw-r--r--include/net/netrom.h32
5 files changed, 212 insertions, 13 deletions
diff --git a/include/linux/connector.h b/include/linux/connector.h
new file mode 100644
index 000000000000..96de26301f84
--- /dev/null
+++ b/include/linux/connector.h
@@ -0,0 +1,158 @@
1/*
2 * connector.h
3 *
4 * 2004-2005 Copyright (c) Evgeniy Polyakov <johnpol@2ka.mipt.ru>
5 * All rights reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#ifndef __CONNECTOR_H
23#define __CONNECTOR_H
24
25#include <asm/types.h>
26
27#define CN_IDX_CONNECTOR 0xffffffff
28#define CN_VAL_CONNECTOR 0xffffffff
29
30#define CN_NETLINK_USERS 1
31
32/*
33 * Maximum connector's message size.
34 */
35#define CONNECTOR_MAX_MSG_SIZE 1024
36
37/*
38 * idx and val are unique identifiers which
39 * are used for message routing and
40 * must be registered in connector.h for in-kernel usage.
41 */
42
43struct cb_id {
44 __u32 idx;
45 __u32 val;
46};
47
48struct cn_msg {
49 struct cb_id id;
50
51 __u32 seq;
52 __u32 ack;
53
54 __u16 len; /* Length of the following data */
55 __u16 flags;
56 __u8 data[0];
57};
58
59/*
60 * Notify structure - requests notification about
61 * registering/unregistering idx/val in range [first, first+range].
62 */
63struct cn_notify_req {
64 __u32 first;
65 __u32 range;
66};
67
68/*
69 * Main notification control message
70 * *_notify_num - number of appropriate cn_notify_req structures after
71 * this struct.
72 * group - notification receiver's idx.
73 * len - total length of the attached data.
74 */
75struct cn_ctl_msg {
76 __u32 idx_notify_num;
77 __u32 val_notify_num;
78 __u32 group;
79 __u32 len;
80 __u8 data[0];
81};
82
83#ifdef __KERNEL__
84
85#include <asm/atomic.h>
86
87#include <linux/list.h>
88#include <linux/workqueue.h>
89
90#include <net/sock.h>
91
92#define CN_CBQ_NAMELEN 32
93
94struct cn_queue_dev {
95 atomic_t refcnt;
96 unsigned char name[CN_CBQ_NAMELEN];
97
98 struct workqueue_struct *cn_queue;
99
100 struct list_head queue_list;
101 spinlock_t queue_lock;
102
103 int netlink_groups;
104 struct sock *nls;
105};
106
107struct cn_callback {
108 unsigned char name[CN_CBQ_NAMELEN];
109
110 struct cb_id id;
111 void (*callback) (void *);
112 void *priv;
113};
114
115struct cn_callback_entry {
116 struct list_head callback_entry;
117 struct cn_callback *cb;
118 struct work_struct work;
119 struct cn_queue_dev *pdev;
120
121 void (*destruct_data) (void *);
122 void *ddata;
123
124 int seq, group;
125 struct sock *nls;
126};
127
128struct cn_ctl_entry {
129 struct list_head notify_entry;
130 struct cn_ctl_msg *msg;
131};
132
133struct cn_dev {
134 struct cb_id id;
135
136 u32 seq, groups;
137 struct sock *nls;
138 void (*input) (struct sock * sk, int len);
139
140 struct cn_queue_dev *cbdev;
141};
142
143int cn_add_callback(struct cb_id *, char *, void (*callback) (void *));
144void cn_del_callback(struct cb_id *);
145int cn_netlink_send(struct cn_msg *, u32, int);
146
147int cn_queue_add_callback(struct cn_queue_dev *dev, struct cn_callback *cb);
148void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id);
149
150struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *);
151void cn_queue_free_dev(struct cn_queue_dev *dev);
152
153int cn_cb_equal(struct cb_id *, struct cb_id *);
154
155extern int cn_already_initialized;
156
157#endif /* __KERNEL__ */
158#endif /* __CONNECTOR_H */
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 167518668936..7bbd25970c9e 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -15,6 +15,7 @@
15#define NETLINK_ISCSI 8 /* Open-iSCSI */ 15#define NETLINK_ISCSI 8 /* Open-iSCSI */
16#define NETLINK_AUDIT 9 /* auditing */ 16#define NETLINK_AUDIT 9 /* auditing */
17#define NETLINK_FIB_LOOKUP 10 17#define NETLINK_FIB_LOOKUP 10
18#define NETLINK_CONNECTOR 11
18#define NETLINK_NETFILTER 12 /* netfilter subsystem */ 19#define NETLINK_NETFILTER 12 /* netfilter subsystem */
19#define NETLINK_IP6_FW 13 20#define NETLINK_IP6_FW 13
20#define NETLINK_DNRTMSG 14 /* DECnet routing messages */ 21#define NETLINK_DNRTMSG 14 /* DECnet routing messages */
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 532a6c5c24e9..3a29a9f9b451 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -544,7 +544,8 @@ enum {
544 NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8, 544 NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
545 NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9, 545 NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
546 NET_NETROM_ROUTING_CONTROL=10, 546 NET_NETROM_ROUTING_CONTROL=10,
547 NET_NETROM_LINK_FAILS_COUNT=11 547 NET_NETROM_LINK_FAILS_COUNT=11,
548 NET_NETROM_RESET=12
548}; 549};
549 550
550/* /proc/sys/net/ax25 */ 551/* /proc/sys/net/ax25 */
diff --git a/include/net/ax25.h b/include/net/ax25.h
index 227d3378decd..9dbcd9e51c00 100644
--- a/include/net/ax25.h
+++ b/include/net/ax25.h
@@ -26,11 +26,20 @@
26 26
27/* AX.25 Protocol IDs */ 27/* AX.25 Protocol IDs */
28#define AX25_P_ROSE 0x01 28#define AX25_P_ROSE 0x01
29#define AX25_P_IP 0xCC 29#define AX25_P_VJCOMP 0x06 /* Compressed TCP/IP packet */
30#define AX25_P_ARP 0xCD 30 /* Van Jacobsen (RFC 1144) */
31#define AX25_P_TEXT 0xF0 31#define AX25_P_VJUNCOMP 0x07 /* Uncompressed TCP/IP packet */
32#define AX25_P_NETROM 0xCF 32 /* Van Jacobsen (RFC 1144) */
33#define AX25_P_SEGMENT 0x08 33#define AX25_P_SEGMENT 0x08 /* Segmentation fragment */
34#define AX25_P_TEXNET 0xc3 /* TEXTNET datagram protocol */
35#define AX25_P_LQ 0xc4 /* Link Quality Protocol */
36#define AX25_P_ATALK 0xca /* Appletalk */
37#define AX25_P_ATALK_ARP 0xcb /* Appletalk ARP */
38#define AX25_P_IP 0xcc /* ARPA Internet Protocol */
39#define AX25_P_ARP 0xcd /* ARPA Adress Resolution */
40#define AX25_P_FLEXNET 0xce /* FlexNet */
41#define AX25_P_NETROM 0xcf /* NET/ROM */
42#define AX25_P_TEXT 0xF0 /* No layer 3 protocol impl. */
34 43
35/* AX.25 Segment control values */ 44/* AX.25 Segment control values */
36#define AX25_SEG_REM 0x7F 45#define AX25_SEG_REM 0x7F
@@ -88,11 +97,11 @@
88/* Define Link State constants. */ 97/* Define Link State constants. */
89 98
90enum { 99enum {
91 AX25_STATE_0, 100 AX25_STATE_0, /* Listening */
92 AX25_STATE_1, 101 AX25_STATE_1, /* SABM sent */
93 AX25_STATE_2, 102 AX25_STATE_2, /* DISC sent */
94 AX25_STATE_3, 103 AX25_STATE_3, /* Established */
95 AX25_STATE_4 104 AX25_STATE_4 /* Recovery */
96}; 105};
97 106
98#define AX25_MODULUS 8 /* Standard AX.25 modulus */ 107#define AX25_MODULUS 8 /* Standard AX.25 modulus */
@@ -319,7 +328,7 @@ extern int ax25_rx_iframe(ax25_cb *, struct sk_buff *);
319extern int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *); 328extern int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
320 329
321/* ax25_ip.c */ 330/* ax25_ip.c */
322extern int ax25_encapsulate(struct sk_buff *, struct net_device *, unsigned short, void *, void *, unsigned int); 331extern int ax25_hard_header(struct sk_buff *, struct net_device *, unsigned short, void *, void *, unsigned int);
323extern int ax25_rebuild_header(struct sk_buff *); 332extern int ax25_rebuild_header(struct sk_buff *);
324 333
325/* ax25_out.c */ 334/* ax25_out.c */
diff --git a/include/net/netrom.h b/include/net/netrom.h
index 45f2c7616d8b..a6bf6e0f606a 100644
--- a/include/net/netrom.h
+++ b/include/net/netrom.h
@@ -6,6 +6,7 @@
6 6
7#ifndef _NETROM_H 7#ifndef _NETROM_H
8#define _NETROM_H 8#define _NETROM_H
9
9#include <linux/netrom.h> 10#include <linux/netrom.h>
10#include <linux/list.h> 11#include <linux/list.h>
11#include <net/sock.h> 12#include <net/sock.h>
@@ -22,6 +23,7 @@
22#define NR_DISCACK 0x04 23#define NR_DISCACK 0x04
23#define NR_INFO 0x05 24#define NR_INFO 0x05
24#define NR_INFOACK 0x06 25#define NR_INFOACK 0x06
26#define NR_RESET 0x07
25 27
26#define NR_CHOKE_FLAG 0x80 28#define NR_CHOKE_FLAG 0x80
27#define NR_NAK_FLAG 0x40 29#define NR_NAK_FLAG 0x40
@@ -51,11 +53,16 @@ enum {
51#define NR_DEFAULT_TTL 16 /* Default Time To Live - 16 */ 53#define NR_DEFAULT_TTL 16 /* Default Time To Live - 16 */
52#define NR_DEFAULT_ROUTING 1 /* Is routing enabled ? */ 54#define NR_DEFAULT_ROUTING 1 /* Is routing enabled ? */
53#define NR_DEFAULT_FAILS 2 /* Link fails until route fails */ 55#define NR_DEFAULT_FAILS 2 /* Link fails until route fails */
56#define NR_DEFAULT_RESET 0 /* Sent / accept reset cmds? */
54 57
55#define NR_MODULUS 256 58#define NR_MODULUS 256
56#define NR_MAX_WINDOW_SIZE 127 /* Maximum Window Allowable - 127 */ 59#define NR_MAX_WINDOW_SIZE 127 /* Maximum Window Allowable - 127 */
57#define NR_MAX_PACKET_SIZE 236 /* Maximum Packet Length - 236 */ 60#define NR_MAX_PACKET_SIZE 236 /* Maximum Packet Length - 236 */
58 61
62struct nr_private {
63 struct net_device_stats stats;
64};
65
59struct nr_sock { 66struct nr_sock {
60 struct sock sock; 67 struct sock sock;
61 ax25_address user_addr, source_addr, dest_addr; 68 ax25_address user_addr, source_addr, dest_addr;
@@ -176,6 +183,8 @@ extern int sysctl_netrom_transport_requested_window_size;
176extern int sysctl_netrom_transport_no_activity_timeout; 183extern int sysctl_netrom_transport_no_activity_timeout;
177extern int sysctl_netrom_routing_control; 184extern int sysctl_netrom_routing_control;
178extern int sysctl_netrom_link_fails_count; 185extern int sysctl_netrom_link_fails_count;
186extern int sysctl_netrom_reset_circuit;
187
179extern int nr_rx_frame(struct sk_buff *, struct net_device *); 188extern int nr_rx_frame(struct sk_buff *, struct net_device *);
180extern void nr_destroy_socket(struct sock *); 189extern void nr_destroy_socket(struct sock *);
181 190
@@ -218,7 +227,28 @@ extern void nr_requeue_frames(struct sock *);
218extern int nr_validate_nr(struct sock *, unsigned short); 227extern int nr_validate_nr(struct sock *, unsigned short);
219extern int nr_in_rx_window(struct sock *, unsigned short); 228extern int nr_in_rx_window(struct sock *, unsigned short);
220extern void nr_write_internal(struct sock *, int); 229extern void nr_write_internal(struct sock *, int);
221extern void nr_transmit_refusal(struct sk_buff *, int); 230
231extern void __nr_transmit_reply(struct sk_buff *skb, int mine,
232 unsigned char cmdflags);
233
234/*
235 * This routine is called when a Connect Acknowledge with the Choke Flag
236 * set is needed to refuse a connection.
237 */
238#define nr_transmit_refusal(skb, mine) \
239do { \
240 __nr_transmit_reply((skb), (mine), NR_CONNACK | NR_CHOKE_FLAG); \
241} while (0)
242
243/*
244 * This routine is called when we don't have a circuit matching an incoming
245 * NET/ROM packet. This is an G8PZT Xrouter extension.
246 */
247#define nr_transmit_reset(skb, mine) \
248do { \
249 __nr_transmit_reply((skb), (mine), NR_RESET); \
250} while (0)
251
222extern void nr_disconnect(struct sock *, int); 252extern void nr_disconnect(struct sock *, int);
223 253
224/* nr_timer.c */ 254/* nr_timer.c */