summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
Diffstat (limited to 'include/net')
-rw-r--r--include/net/ip.h6
-rw-r--r--include/net/ip6_fib.h4
-rw-r--r--include/net/ip6_route.h1
-rw-r--r--include/net/ip_masq.h5
-rw-r--r--include/net/ipv6.h40
-rw-r--r--include/net/ndisc.h7
-rw-r--r--include/net/netbeui.h150
-rw-r--r--include/net/p8022tr.h8
-rw-r--r--include/net/p8022trcall.h3
-rw-r--r--include/net/sock.h17
-rw-r--r--include/net/tcp.h17
-rw-r--r--include/net/x25.h2
12 files changed, 68 insertions, 192 deletions
diff --git a/include/net/ip.h b/include/net/ip.h
index add85700b..63ef8b0a2 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -23,7 +23,6 @@
#define _IP_H
-#include <linux/config.h>
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/ip.h>
@@ -94,11 +93,6 @@ extern int ip_local_deliver(struct sk_buff *skb);
extern int ip_mr_input(struct sk_buff *skb);
extern int ip_output(struct sk_buff *skb);
extern int ip_mc_output(struct sk_buff *skb);
-#ifdef CONFIG_IP_ACCT
-extern int ip_acct_output(struct sk_buff *skb);
-#else
-#define ip_acct_output dev_queue_xmit
-#endif
extern void ip_fragment(struct sk_buff *skb, int (*out)(struct sk_buff*));
extern int ip_do_nat(struct sk_buff *skb);
extern void ip_send_check(struct iphdr *ip);
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 6b355cc12..5bd90dde7 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -141,7 +141,9 @@ extern int fib6_del(struct rt6_info *rt);
extern void inet6_rt_notify(int event, struct rt6_info *rt);
-extern void fib6_run_gc(unsigned long dummy);
+extern void fib6_run_gc(unsigned long dummy);
+
+extern void fib6_gc_cleanup(void);
#endif
#endif
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
index 8fb0fbed7..8ca62a7ed 100644
--- a/include/net/ip6_route.h
+++ b/include/net/ip6_route.h
@@ -100,6 +100,7 @@ struct netlink_callback;
extern int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb);
extern int inet6_rtm_newroute(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg);
extern int inet6_rtm_delroute(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg);
+extern int inet6_rtm_getroute(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg);
extern void rt6_ifdown(struct device *dev);
diff --git a/include/net/ip_masq.h b/include/net/ip_masq.h
index 65282bfcb..716eea2ef 100644
--- a/include/net/ip_masq.h
+++ b/include/net/ip_masq.h
@@ -258,9 +258,10 @@ extern atomic_t __ip_masq_lock;
extern int ip_masq_get_debug_level(void);
#ifndef CONFIG_IP_MASQ_NDEBUG
-#define IP_MASQ_DEBUG(level, msg...) \
+#define IP_MASQ_DEBUG(level, msg...) do { \
if (level <= ip_masq_get_debug_level()) \
- printk(KERN_DEBUG "IP_MASQ:" ## msg)
+ printk(KERN_DEBUG "IP_MASQ:" ## msg); \
+ } while (0)
#else /* NO DEBUGGING at ALL */
#define IP_MASQ_DEBUG(level, msg...) do { } while (0)
#endif
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index c3d2d5895..acf37b357 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -4,7 +4,7 @@
* Authors:
* Pedro Roque <roque@di.fc.ul.pt>
*
- * $Id: ipv6.h,v 1.10 1998/04/30 16:24:14 freitag Exp $
+ * $Id: ipv6.h,v 1.12 1998/07/15 05:05:02 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -118,6 +118,31 @@ struct frag_queue {
__u8 *nhptr;
};
+struct ipv6_tlvtype
+{
+ u8 type;
+ u8 len;
+};
+
+struct ip6_ra_chain
+{
+ struct ip6_ra_chain *next;
+ struct sock *sk;
+ int sel;
+ void (*destructor)(struct sock *);
+};
+
+extern struct ip6_ra_chain *ip6_ra_chain;
+
+extern int ip6_ra_control(struct sock *sk, int sel,
+ void (*destructor)(struct sock *));
+
+
+extern int ip6_call_ra_chain(struct sk_buff *skb, int sel);
+
+extern int ip6_dstopt_unknown(struct sk_buff *skb,
+ struct ipv6_tlvtype *hdr);
+
extern int ipv6_routing_header(struct sk_buff **skb,
struct device *dev,
__u8 *nhptr,
@@ -266,11 +291,16 @@ extern int ipv6_getsockopt(struct sock *sk, int level,
int optname, char *optval,
int *optlen);
+extern void ipv6_packet_init(void);
-extern void ipv6_init(void);
-extern void ipv6_cleanup(void);
-#endif
-#endif
+extern void ipv6_netdev_notif_init(void);
+
+extern void ipv6_packet_cleanup(void);
+
+extern void ipv6_netdev_notif_cleanup(void);
+
+#endif /* __KERNEL__ */
+#endif /* _NET_IPV6_H */
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index adaf76ef3..8ca371336 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -56,7 +56,8 @@ struct ra_msg {
};
-extern void ndisc_init(struct net_proto_family *ops);
+extern int ndisc_init(struct net_proto_family *ops);
+
extern void ndisc_cleanup(void);
extern int ndisc_rcv(struct sk_buff *skb,
@@ -91,7 +92,9 @@ struct rt6_info * dflt_rt_lookup(void);
/*
* IGMP
*/
-extern void igmp6_init(struct net_proto_family *ops);
+extern int igmp6_init(struct net_proto_family *ops);
+
+extern void igmp6_cleanup(void);
extern int igmp6_event_query(struct sk_buff *skb,
struct icmp6hdr *hdr,
diff --git a/include/net/netbeui.h b/include/net/netbeui.h
deleted file mode 100644
index 417a27e2c..000000000
--- a/include/net/netbeui.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * NetBEUI data structures
- */
-
-#ifndef __NET_NETBEUI_H
-#define __NET_NETBEUI_H
-
-
-#define NB_NAME_LEN 16
-
-/*
- * Used to keep lists of netbeui sessions
- */
-
-struct nb_ses
-{
- struct nb_ses *next;
- struct nb_nam *name;
- struct nb_link *parent; /* Owner link */
- struct sock *sk;
-};
-
-/*
- * A netbeui link
- */
-
-struct nb_link
-{
- struct llc llc; /* Must be first */
- u8 mac[6]; /* Mac address of remote */
- struct device *dev; /* Device we heard him on */
- struct nb_ses *sessions;/* Netbeui sessions on this LLC link */
- struct wait_queue *wait;/* Wait queue for this netbios LLC */
- int busy; /* Track the LLC busy state */
- int state; /* Link state */
-#define NETBEUI_OPEN 1 /* Up and going */
-#define NETBEUI_CONNWAIT 2 /* Waiting to come up */
-#define NETBEUI_DISCWAIT 3 /* Waiting to drop and recover */
-#define NETBEUI_DEADWAIT 4 /* Trying to die */
-};
-
-
-/*
- * Netbios name defence list
- */
-
-struct nb_name
-{
- struct nb_name *next; /* Chain */
- struct device *dev; /* Device */
- char name[NB_NAME_LEN]; /* Object Name */
- int state; /* Name State */
-#define NB_NAME_ACQUIRE 1 /* We are trying to get a name */
-#define NB_NAME_COLLIDE 2 /* Name collided - we failed */
-#define NB_OURS 3 /* We own the name */
-#define NB_NAME_OTHER 4 /* Name found - owned by other */
-#define NB_NAME_GET 5 /* Trying to allocate a name */
-#define NB_STATE 7 /* State bits */
-#define NB_NAME_GROUP 8 /* Group name bit */
- int ours; /* We own this name */
- int users; /* Number of nb_ses's to this name */
- struct timer_list timer; /* Our timer */
- int timer_mode; /* Timer mode */
-#define NB_TIMER_ACQUIRE 1 /* Expiry means we got our name */
-#define NB_TIMER_COLLIDE 2 /* Expire a collided record */
-#define NB_TIMER_DROP 3 /* Drop a learned record */
-};
-
-
-/*
- * LLC link manager
- */
-
-extern struct nb_link *netbeui_find_link(u8 macaddr);
-extern struct nb_link *netbeui_create_link(u8 macaddr);
-extern int netbeui_destroy_link(u8 macaddr);
-
-/*
- * Namespace manager
- */
-
-extern struct nb_name *netbeui_find_name(char *name);
-extern struct nb_name *netbeui_add_name(char *name, int ours);
-extern struct nb_name *netbeui_lookup_name(char *name);
-extern int nb_delete_name(struct nb_name *name);
-
-/*
- * NetBEUI Protocol items
- */
-
-#define ADD_GROUP_NAME_QUERY 0x00
-#define ADD_NAME_QUERY 0x01
-#define NAME_IN_CONFLICT 0x02
-#define STATUS_QUERY 0x03
-#define TERMINATE_TRACE 0x07
-#define DATAGRAM 0x08
-#define DATAGRAM_BROADCAST 0x09
-#define NAME_QUERY 0x0A
-#define ADD_NAME_RESPONSE 0x0D
-#define NAME_RECOGNIZED 0x0E
-#define STATUS_RESPONSE 0x0F
-#define TERMINATE_TRACE2 0x13
-#define DATA_ACK 0x14
-#define DATA_FIRST_MIDDLE 0x15
-#define DATA_ONLY_LAST 0x16
-#define SESSION_CONFIRM 0x17
-#define SESSION_END 0x18
-#define SESSION_INITIALIZE 0x19
-#define NO_RECEIVE 0x1A
-#define RECEIVE_OUTSTANDING 0x1B
-#define RECEIVE_CONTINUE 0x1C
-#define SESSION_ALIVE 0x1F
-
-#define NB_TRANSMIT_COUNT 6
-#define NB_TRANSMIT_TIMEOUT (HZ/2)
-
-#define NB_DESCRIM_1 0xEF
-#define NB_DESCRIM_2 0xFF
-
-struct nb_dgram_pkt
-{
- __u16 length;
- __u8 descrim1;
- __u8 descrim2;
- __u8 command;
- __u8 option1;
- __u16 option2;
- __u16 tx_seq;
- __u16 rx_seq;
- __u8 dest[NB_NAME_LEN];
- __u8 src[NB_NAME_LEN];
-};
-
-struct nb_sess_pkt
-{
- __u16 length;
- __u8 descrim1;
- __u8 descrim2;
- __u8 command;
- __u8 option1;
- __u16 option2;
- __u16 tx_seq;
- __u16 rx_seq;
- __u8 dnum;
- __u8 snum;
-};
-
-#define NO_SEQ 0
-
-#endif
diff --git a/include/net/p8022tr.h b/include/net/p8022tr.h
deleted file mode 100644
index f4231ecee..000000000
--- a/include/net/p8022tr.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef _NET_P8022TR_H
-#define _NET_P8022TR_H
-
-extern struct datalink_proto *register_8022tr_client(unsigned char type, int (*rcvfunc)(struct sk_buff *, struct device *, struct packet_type *));
-extern void unregister_8022tr_client(unsigned char type);
-
-#endif
-
diff --git a/include/net/p8022trcall.h b/include/net/p8022trcall.h
deleted file mode 100644
index 3ce6f3cdb..000000000
--- a/include/net/p8022trcall.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Separate to keep compilation of Space.c simpler */
-extern void p8022tr_proto_init(struct net_proto *);
-
diff --git a/include/net/sock.h b/include/net/sock.h
index 29d7985be..ed05e12be 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -126,12 +126,6 @@ struct ipx_opt {
unsigned char node[IPX_NODE_LEN];
#endif
unsigned short type;
-/*
- * To handle asynchronous messages from the NetWare server, we have to
- * know the connection this socket belongs to.
- */
- struct ncp_server *ncp_server;
-
};
#endif
@@ -454,6 +448,9 @@ struct sock {
#if defined(CONFIG_IPX) || defined(CONFIG_IPX_MODULE)
struct ipx_opt af_ipx;
#endif
+#if defined (CONFIG_DECNET) || defined(CONFIG_DECNET_MODULE)
+ struct dn_scp dn;
+#endif
#if defined (CONFIG_PACKET) || defined(CONFIG_PACKET_MODULE)
struct packet_opt *af_packet;
#endif
@@ -462,19 +459,19 @@ struct sock {
#endif
#if defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
ax25_cb *ax25;
+#endif
#if defined(CONFIG_NETROM) || defined(CONFIG_NETROM_MODULE)
nr_cb *nr;
#endif
#if defined(CONFIG_ROSE) || defined(CONFIG_ROSE_MODULE)
rose_cb *rose;
#endif
-#endif
-#if defined(CONFIG_DECNET) || defined(CONFIG_DECNET_MODULE)
- dn_cb *dn;
-#endif
#ifdef CONFIG_NETLINK
struct netlink_opt af_netlink;
#endif
+#if defined(CONFIG_ECONET) || defined(CONFIG_ECONET_MODULE)
+ struct econet_opt *af_econet;
+#endif
} protinfo;
/* IP 'private area' or will be eventually. */
diff --git a/include/net/tcp.h b/include/net/tcp.h
index ca1240b8a..225d40ad0 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -654,17 +654,24 @@ static __inline__ unsigned int tcp_current_mss(struct sock *sk)
return mss_now;
}
-/* Compute the actual receive window we are currently advertising. */
+/* Compute the actual receive window we are currently advertising.
+ * Rcv_nxt can be after the window if our peer push more data
+ * than the offered window.
+ */
static __inline__ u32 tcp_receive_window(struct tcp_opt *tp)
{
- return tp->rcv_wup - (tp->rcv_nxt - tp->rcv_wnd);
+ s32 win = tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt;
+
+ if (win < 0)
+ win = 0;
+ return (u32) win;
}
/* Choose a new window, without checks for shrinking, and without
* scaling applied to the result. The caller does these things
* if necessary. This is a "raw" window selection.
*/
-extern u32 __tcp_select_window(struct sock *sk);
+extern u32 __tcp_select_window(struct sock *sk, u32 cur_win);
/* Chose a new window to advertise, update state in tcp_opt for the
* socket, and return result with RFC1323 scaling applied. The return
@@ -674,8 +681,8 @@ extern u32 __tcp_select_window(struct sock *sk);
extern __inline__ u16 tcp_select_window(struct sock *sk)
{
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
- u32 new_win = __tcp_select_window(sk);
u32 cur_win = tcp_receive_window(tp);
+ u32 new_win = __tcp_select_window(sk, cur_win);
/* Never shrink the offered window */
if(new_win < cur_win)
@@ -694,8 +701,8 @@ extern __inline__ u16 tcp_select_window(struct sock *sk)
extern __inline__ int tcp_raise_window(struct sock *sk)
{
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
- u32 new_win = __tcp_select_window(sk);
u32 cur_win = tcp_receive_window(tp);
+ u32 new_win = __tcp_select_window(sk, cur_win);
return (new_win && (new_win > (cur_win << 1)));
}
diff --git a/include/net/x25.h b/include/net/x25.h
index a72bd0426..5ac507bd5 100644
--- a/include/net/x25.h
+++ b/include/net/x25.h
@@ -147,6 +147,7 @@ extern unsigned int x25_new_lci(struct x25_neigh *);
extern struct sock *x25_find_socket(unsigned int, struct x25_neigh *);
extern void x25_destroy_socket(struct sock *);
extern int x25_rx_call_request(struct sk_buff *, struct x25_neigh *, unsigned int);
+extern void x25_kill_by_neigh(struct x25_neigh *);
#include <net/x25call.h>
@@ -161,6 +162,7 @@ extern void x25_terminate_link(struct x25_neigh *);
extern int x25_parse_facilities(struct sk_buff *, struct x25_facilities *);
extern int x25_create_facilities(unsigned char *, struct x25_facilities *);
extern int x25_negotiate_facilities(struct sk_buff *, struct sock *, struct x25_facilities *);
+extern void x25_limit_facilities(struct x25_facilities *, struct x25_neigh *);
/* x25_in.c */
extern int x25_process_rx_frame(struct sock *, struct sk_buff *);