Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
* connector.h
|
||||
*
|
||||
* 2004-2005 Copyright (c) Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __CONNECTOR_H
|
||||
#define __CONNECTOR_H
|
||||
|
||||
#include <asm/types.h>
|
||||
|
||||
#define CN_IDX_CONNECTOR 0xffffffff
|
||||
#define CN_VAL_CONNECTOR 0xffffffff
|
||||
|
||||
#define CN_NETLINK_USERS 1
|
||||
|
||||
/*
|
||||
* Maximum connector's message size.
|
||||
*/
|
||||
#define CONNECTOR_MAX_MSG_SIZE 1024
|
||||
|
||||
/*
|
||||
* idx and val are unique identifiers which
|
||||
* are used for message routing and
|
||||
* must be registered in connector.h for in-kernel usage.
|
||||
*/
|
||||
|
||||
struct cb_id {
|
||||
__u32 idx;
|
||||
__u32 val;
|
||||
};
|
||||
|
||||
struct cn_msg {
|
||||
struct cb_id id;
|
||||
|
||||
__u32 seq;
|
||||
__u32 ack;
|
||||
|
||||
__u16 len; /* Length of the following data */
|
||||
__u16 flags;
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* Notify structure - requests notification about
|
||||
* registering/unregistering idx/val in range [first, first+range].
|
||||
*/
|
||||
struct cn_notify_req {
|
||||
__u32 first;
|
||||
__u32 range;
|
||||
};
|
||||
|
||||
/*
|
||||
* Main notification control message
|
||||
* *_notify_num - number of appropriate cn_notify_req structures after
|
||||
* this struct.
|
||||
* group - notification receiver's idx.
|
||||
* len - total length of the attached data.
|
||||
*/
|
||||
struct cn_ctl_msg {
|
||||
__u32 idx_notify_num;
|
||||
__u32 val_notify_num;
|
||||
__u32 group;
|
||||
__u32 len;
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <net/sock.h>
|
||||
|
||||
#define CN_CBQ_NAMELEN 32
|
||||
|
||||
struct cn_queue_dev {
|
||||
atomic_t refcnt;
|
||||
unsigned char name[CN_CBQ_NAMELEN];
|
||||
|
||||
struct workqueue_struct *cn_queue;
|
||||
|
||||
struct list_head queue_list;
|
||||
spinlock_t queue_lock;
|
||||
|
||||
int netlink_groups;
|
||||
struct sock *nls;
|
||||
};
|
||||
|
||||
struct cn_callback {
|
||||
unsigned char name[CN_CBQ_NAMELEN];
|
||||
|
||||
struct cb_id id;
|
||||
void (*callback) (void *);
|
||||
void *priv;
|
||||
};
|
||||
|
||||
struct cn_callback_entry {
|
||||
struct list_head callback_entry;
|
||||
struct cn_callback *cb;
|
||||
struct work_struct work;
|
||||
struct cn_queue_dev *pdev;
|
||||
|
||||
void (*destruct_data) (void *);
|
||||
void *ddata;
|
||||
|
||||
int seq, group;
|
||||
struct sock *nls;
|
||||
};
|
||||
|
||||
struct cn_ctl_entry {
|
||||
struct list_head notify_entry;
|
||||
struct cn_ctl_msg *msg;
|
||||
};
|
||||
|
||||
struct cn_dev {
|
||||
struct cb_id id;
|
||||
|
||||
u32 seq, groups;
|
||||
struct sock *nls;
|
||||
void (*input) (struct sock * sk, int len);
|
||||
|
||||
struct cn_queue_dev *cbdev;
|
||||
};
|
||||
|
||||
int cn_add_callback(struct cb_id *, char *, void (*callback) (void *));
|
||||
void cn_del_callback(struct cb_id *);
|
||||
int cn_netlink_send(struct cn_msg *, u32, int);
|
||||
|
||||
int cn_queue_add_callback(struct cn_queue_dev *dev, struct cn_callback *cb);
|
||||
void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id);
|
||||
|
||||
struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *);
|
||||
void cn_queue_free_dev(struct cn_queue_dev *dev);
|
||||
|
||||
int cn_cb_equal(struct cb_id *, struct cb_id *);
|
||||
|
||||
extern int cn_already_initialized;
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __CONNECTOR_H */
|
||||
@@ -15,6 +15,7 @@
|
||||
#define NETLINK_ISCSI 8 /* Open-iSCSI */
|
||||
#define NETLINK_AUDIT 9 /* auditing */
|
||||
#define NETLINK_FIB_LOOKUP 10
|
||||
#define NETLINK_CONNECTOR 11
|
||||
#define NETLINK_NETFILTER 12 /* netfilter subsystem */
|
||||
#define NETLINK_IP6_FW 13
|
||||
#define NETLINK_DNRTMSG 14 /* DECnet routing messages */
|
||||
|
||||
@@ -544,7 +544,8 @@ enum {
|
||||
NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
|
||||
NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
|
||||
NET_NETROM_ROUTING_CONTROL=10,
|
||||
NET_NETROM_LINK_FAILS_COUNT=11
|
||||
NET_NETROM_LINK_FAILS_COUNT=11,
|
||||
NET_NETROM_RESET=12
|
||||
};
|
||||
|
||||
/* /proc/sys/net/ax25 */
|
||||
|
||||
+20
-11
@@ -26,11 +26,20 @@
|
||||
|
||||
/* AX.25 Protocol IDs */
|
||||
#define AX25_P_ROSE 0x01
|
||||
#define AX25_P_IP 0xCC
|
||||
#define AX25_P_ARP 0xCD
|
||||
#define AX25_P_TEXT 0xF0
|
||||
#define AX25_P_NETROM 0xCF
|
||||
#define AX25_P_SEGMENT 0x08
|
||||
#define AX25_P_VJCOMP 0x06 /* Compressed TCP/IP packet */
|
||||
/* Van Jacobsen (RFC 1144) */
|
||||
#define AX25_P_VJUNCOMP 0x07 /* Uncompressed TCP/IP packet */
|
||||
/* Van Jacobsen (RFC 1144) */
|
||||
#define AX25_P_SEGMENT 0x08 /* Segmentation fragment */
|
||||
#define AX25_P_TEXNET 0xc3 /* TEXTNET datagram protocol */
|
||||
#define AX25_P_LQ 0xc4 /* Link Quality Protocol */
|
||||
#define AX25_P_ATALK 0xca /* Appletalk */
|
||||
#define AX25_P_ATALK_ARP 0xcb /* Appletalk ARP */
|
||||
#define AX25_P_IP 0xcc /* ARPA Internet Protocol */
|
||||
#define AX25_P_ARP 0xcd /* ARPA Adress Resolution */
|
||||
#define AX25_P_FLEXNET 0xce /* FlexNet */
|
||||
#define AX25_P_NETROM 0xcf /* NET/ROM */
|
||||
#define AX25_P_TEXT 0xF0 /* No layer 3 protocol impl. */
|
||||
|
||||
/* AX.25 Segment control values */
|
||||
#define AX25_SEG_REM 0x7F
|
||||
@@ -88,11 +97,11 @@
|
||||
/* Define Link State constants. */
|
||||
|
||||
enum {
|
||||
AX25_STATE_0,
|
||||
AX25_STATE_1,
|
||||
AX25_STATE_2,
|
||||
AX25_STATE_3,
|
||||
AX25_STATE_4
|
||||
AX25_STATE_0, /* Listening */
|
||||
AX25_STATE_1, /* SABM sent */
|
||||
AX25_STATE_2, /* DISC sent */
|
||||
AX25_STATE_3, /* Established */
|
||||
AX25_STATE_4 /* Recovery */
|
||||
};
|
||||
|
||||
#define AX25_MODULUS 8 /* Standard AX.25 modulus */
|
||||
@@ -319,7 +328,7 @@ extern int ax25_rx_iframe(ax25_cb *, struct sk_buff *);
|
||||
extern int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
|
||||
|
||||
/* ax25_ip.c */
|
||||
extern int ax25_encapsulate(struct sk_buff *, struct net_device *, unsigned short, void *, void *, unsigned int);
|
||||
extern int ax25_hard_header(struct sk_buff *, struct net_device *, unsigned short, void *, void *, unsigned int);
|
||||
extern int ax25_rebuild_header(struct sk_buff *);
|
||||
|
||||
/* ax25_out.c */
|
||||
|
||||
+31
-1
@@ -6,6 +6,7 @@
|
||||
|
||||
#ifndef _NETROM_H
|
||||
#define _NETROM_H
|
||||
|
||||
#include <linux/netrom.h>
|
||||
#include <linux/list.h>
|
||||
#include <net/sock.h>
|
||||
@@ -22,6 +23,7 @@
|
||||
#define NR_DISCACK 0x04
|
||||
#define NR_INFO 0x05
|
||||
#define NR_INFOACK 0x06
|
||||
#define NR_RESET 0x07
|
||||
|
||||
#define NR_CHOKE_FLAG 0x80
|
||||
#define NR_NAK_FLAG 0x40
|
||||
@@ -51,11 +53,16 @@ enum {
|
||||
#define NR_DEFAULT_TTL 16 /* Default Time To Live - 16 */
|
||||
#define NR_DEFAULT_ROUTING 1 /* Is routing enabled ? */
|
||||
#define NR_DEFAULT_FAILS 2 /* Link fails until route fails */
|
||||
#define NR_DEFAULT_RESET 0 /* Sent / accept reset cmds? */
|
||||
|
||||
#define NR_MODULUS 256
|
||||
#define NR_MAX_WINDOW_SIZE 127 /* Maximum Window Allowable - 127 */
|
||||
#define NR_MAX_PACKET_SIZE 236 /* Maximum Packet Length - 236 */
|
||||
|
||||
struct nr_private {
|
||||
struct net_device_stats stats;
|
||||
};
|
||||
|
||||
struct nr_sock {
|
||||
struct sock sock;
|
||||
ax25_address user_addr, source_addr, dest_addr;
|
||||
@@ -176,6 +183,8 @@ extern int sysctl_netrom_transport_requested_window_size;
|
||||
extern int sysctl_netrom_transport_no_activity_timeout;
|
||||
extern int sysctl_netrom_routing_control;
|
||||
extern int sysctl_netrom_link_fails_count;
|
||||
extern int sysctl_netrom_reset_circuit;
|
||||
|
||||
extern int nr_rx_frame(struct sk_buff *, struct net_device *);
|
||||
extern void nr_destroy_socket(struct sock *);
|
||||
|
||||
@@ -218,7 +227,28 @@ extern void nr_requeue_frames(struct sock *);
|
||||
extern int nr_validate_nr(struct sock *, unsigned short);
|
||||
extern int nr_in_rx_window(struct sock *, unsigned short);
|
||||
extern void nr_write_internal(struct sock *, int);
|
||||
extern void nr_transmit_refusal(struct sk_buff *, int);
|
||||
|
||||
extern void __nr_transmit_reply(struct sk_buff *skb, int mine,
|
||||
unsigned char cmdflags);
|
||||
|
||||
/*
|
||||
* This routine is called when a Connect Acknowledge with the Choke Flag
|
||||
* set is needed to refuse a connection.
|
||||
*/
|
||||
#define nr_transmit_refusal(skb, mine) \
|
||||
do { \
|
||||
__nr_transmit_reply((skb), (mine), NR_CONNACK | NR_CHOKE_FLAG); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* This routine is called when we don't have a circuit matching an incoming
|
||||
* NET/ROM packet. This is an G8PZT Xrouter extension.
|
||||
*/
|
||||
#define nr_transmit_reset(skb, mine) \
|
||||
do { \
|
||||
__nr_transmit_reply((skb), (mine), NR_RESET); \
|
||||
} while (0)
|
||||
|
||||
extern void nr_disconnect(struct sock *, int);
|
||||
|
||||
/* nr_timer.c */
|
||||
|
||||
Reference in New Issue
Block a user