|
|
1.1 ! root 1: /* protocols.c */ ! 2: /* these headers are overkill, but until I clean up the socket header ! 3: files, this is the best way. */ ! 4: ! 5: #include <asm/segment.h> ! 6: #include <asm/system.h> ! 7: #include <linux/types.h> ! 8: #include <linux/kernel.h> ! 9: #include <linux/sched.h> ! 10: #include <linux/string.h> ! 11: #include <linux/socket.h> ! 12: #include <netinet/in.h> ! 13: #include "timer.h" ! 14: #include "ip.h" ! 15: #include "tcp.h" ! 16: #include "sock.h" ! 17: #include "icmp.h" ! 18: ! 19: int udp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt, ! 20: unsigned long daddr, unsigned short len, ! 21: unsigned long saddr, int redo, struct ip_protocol *protocol); ! 22: ! 23: void udp_err (int err, unsigned char *header, unsigned long daddr, ! 24: unsigned long saddr, struct ip_protocol *protocol); ! 25: ! 26: ! 27: int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt, ! 28: unsigned long daddr, unsigned short len, ! 29: unsigned long saddr, int redo, struct ip_protocol *protocol); ! 30: ! 31: void tcp_err (int err, unsigned char *header, unsigned long daddr, ! 32: unsigned long saddr, struct ip_protocol *protocol); ! 33: ! 34: int icmp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt, ! 35: unsigned long daddr, unsigned short len, ! 36: unsigned long saddr, int redo, struct ip_protocol *protocol); ! 37: ! 38: ! 39: static struct ip_protocol tcp_protocol = ! 40: { ! 41: tcp_rcv, ! 42: tcp_err, ! 43: NULL, ! 44: IP_TCP, ! 45: 0, /* copy */ ! 46: NULL ! 47: }; ! 48: ! 49: static struct ip_protocol udp_protocol = ! 50: { ! 51: udp_rcv, ! 52: udp_err, ! 53: &tcp_protocol, ! 54: IP_UDP, ! 55: 0, /* copy */ ! 56: NULL ! 57: }; ! 58: ! 59: static struct ip_protocol icmp_protocol = ! 60: { ! 61: icmp_rcv, ! 62: NULL, ! 63: &udp_protocol, ! 64: IP_ICMP, ! 65: 0, /* copy */ ! 66: NULL ! 67: }; ! 68: ! 69: struct ip_protocol *ip_protocol_base = &icmp_protocol;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.