Files
oldlinux-files/bin-src/Linus.patch
2024-02-19 00:21:55 -05:00

2410 lines
70 KiB
Diff

diff -c --recursive --new-file std/Configure linux/Configure
*** std/Configure Wed Mar 31 16:36:25 1993
--- linux/Configure Sat Apr 24 19:39:35 1993
***************
*** 1,27 ****
#! /bin/sh
#
! # This script is used to configure the linux kernel.
! # It's a fast hack - feel free to do something better.
! CONFIG=.config~
! CONFIG_H=include/linux/autoconf.h
! > config.new
! echo "#" > $CONFIG
! echo "# Automatically generated make config: don't edit" >> $CONFIG
! echo "#" >> $CONFIG
!
! echo "/*" > $CONFIG_H
! echo " * Automatically generated C config: don't edit" >> $CONFIG_H
! echo " */" >> $CONFIG_H
!
! next="y"
! old="y"
! while read i
! do
echo $i >> config.new
! echo >> $CONFIG
! echo >> $CONFIG_H
! echo
echo "#" >> $CONFIG
echo "/*" >> $CONFIG_H
echo "**"
--- 1,55 ----
#! /bin/sh
+ # Configure This script is used to configure the Linux kernel.
#
! # Usage: Configure [-pro]
! #
! # Version; @(#)Configure 1.3 04/05/93
! #
! # Author: Linus Torvalds, <torvalds@helsinki.fi>
! #
! # Set variables to initial state.
! OPTS=""
! CONFIG=.config~
! CONFIG_H=include/linux/autoconf.h
! next="y"
! old="y"
!
! # Check commandline arguments.
! >config.new
! while [ $# != 0 ]
! do
! case $1 in
! -pro) OPTS="UTS_SYSNAME \"LINUX/Pro\""
! ;;
! *) echo "Usage: Configure [-pro]"
! exit 1
! ;;
! esac
! shift
! done
!
! echo "#" > $CONFIG
! echo "# Automatically generated make config: don't edit" >> $CONFIG
! echo "#" >> $CONFIG
!
! echo "/*" > $CONFIG_H
! echo " * Automatically generated C config: don't edit" >> $CONFIG_H
! echo " */" >> $CONFIG_H
!
! # First of all, emit the "special" features to <linux/autoconf.h>.
! if [ "${OPTS}" ]
! then
! echo "#define ${OPTS}" >> $CONFIG_H
! fi
!
! # Read our standard input (which is the CONFIG.IN file).
! while read i
! do
echo $i >> config.new
! echo >> $CONFIG
! echo >> $CONFIG_H
! echo
echo "#" >> $CONFIG
echo "/*" >> $CONFIG_H
echo "**"
***************
*** 69,83 ****
then
next="n"
fi
! done
!
! mv config.new config.in
! echo
! echo "The linux kernel is now hopefully configured for your setup."
! echo "Check the top-level Makefile for additional configuration,"
! echo "and do a 'make dep ; make clean' if you want to be sure all"
! echo "the files are correctly re-made"
! echo
! exit 0
--- 97,110 ----
then
next="n"
fi
! done
! mv config.new config.in
! echo
! echo "The linux kernel is now hopefully configured for your setup."
! echo "Check the top-level Makefile for additional configuration,"
! echo "and do a 'make dep ; make clean' if you want to be sure all"
! echo "the files are correctly re-made"
! echo
! exit 0
diff -c --recursive --new-file std/Makefile linux/Makefile
*** std/Makefile Thu Apr 22 23:10:11 1993
--- linux/Makefile Sat Apr 24 22:36:50 1993
***************
*** 44,52 ****
# 0x08 - tilde (~)
# 0x10 - dieresis (umlaut)
! KEYBOARD = -DKBD_FINNISH -DKBDFLAGS=0
# KEYBOARD = -DKBD_FINNISH_LATIN1 -DKBDFLAGS=0x1F
! # KEYBOARD = -DKBD_US -DKBDFLAGS=0
# KEYBOARD = -DKBD_GR -DKBDFLAGS=0
# KEYBOARD = -DKBD_GR_LATIN1 -DKBDFLAGS=0x1F
# KEYBOARD = -DKBD_FR -DKBDFLAGS=0
--- 44,52 ----
# 0x08 - tilde (~)
# 0x10 - dieresis (umlaut)
! # KEYBOARD = -DKBD_FINNISH -DKBDFLAGS=0
# KEYBOARD = -DKBD_FINNISH_LATIN1 -DKBDFLAGS=0x1F
! KEYBOARD = -DKBD_US -DKBDFLAGS=0
# KEYBOARD = -DKBD_GR -DKBDFLAGS=0
# KEYBOARD = -DKBD_GR_LATIN1 -DKBDFLAGS=0x1F
# KEYBOARD = -DKBD_FR -DKBDFLAGS=0
***************
*** 68,75 ****
# The number is the same as you would ordinarily press at bootup.
#
! SVGA_MODE= -DSVGA_MODE=3
#
# standard CFLAGS
#
--- 68,78 ----
# The number is the same as you would ordinarily press at bootup.
#
! SVGA_MODE= -DSVGA_MODE=NORMAL_VGA
+ # Special options.
+ OPTS = -pro
+
#
# standard CFLAGS
#
***************
*** 125,131 ****
/etc/lilo/install
config:
! sh Configure < config.in
mv .config~ .config
$(MAKE) soundconf
--- 128,134 ----
/etc/lilo/install
config:
! sh Configure $(OPTS) < config.in
mv .config~ .config
$(MAKE) soundconf
***************
*** 139,146 ****
tools/version.h: $(CONFIGURE) Makefile
@./makever.sh
! @echo \#define UTS_RELEASE \"0.99.pl9-`cat .version`\" > tools/version.h
! @echo \#define UTS_VERSION \"`date +%D`\" >> tools/version.h
@echo \#define LINUX_COMPILE_TIME \"`date +%T`\" >> tools/version.h
@echo \#define LINUX_COMPILE_BY \"`whoami`\" >> tools/version.h
@echo \#define LINUX_COMPILE_HOST \"`hostname`\" >> tools/version.h
--- 142,149 ----
tools/version.h: $(CONFIGURE) Makefile
@./makever.sh
! @echo \#define UTS_RELEASE \"0.99.9-`cat .version`\" > tools/version.h
! @echo \#define UTS_VERSION \"`date`\" >> tools/version.h
@echo \#define LINUX_COMPILE_TIME \"`date +%T`\" >> tools/version.h
@echo \#define LINUX_COMPILE_BY \"`whoami`\" >> tools/version.h
@echo \#define LINUX_COMPILE_HOST \"`hostname`\" >> tools/version.h
diff -c --recursive --new-file std/config.in linux/config.in
*** std/config.in Fri Apr 23 20:41:46 1993
--- linux/config.in Sat Apr 24 21:04:24 1993
***************
*** 1,78 ****
General setup
.
Kernel math emulation
! CONFIG_MATH_EMULATION y/n n
Normal harddisk support
CONFIG_BLK_DEV_HD y/n y
XT harddisk support
CONFIG_BLK_DEV_XD y/n n
! TCP/IP
! CONFIG_TCPIP y/n y
Kernel profiling support
CONFIG_PROFILE y/n n
Limit memory to low 16MB
! CONFIG_MAX_16M y/n n
Use -m486 flag for 486-specific optimizations
CONFIG_M486 y/n y
:
SCSI support
.
SCSI support?
! CONFIG_SCSI y/n n
:
SCSI support type (disk, tape, CDrom)
.
Scsi disk support
! CONFIG_BLK_DEV_SD y/n n
Scsi tape support
! CONFIG_BLK_DEV_ST y/n n
Scsi CDROM support
! CONFIG_BLK_DEV_SR y/n n
.
SCSI low-level drivers
.
Adaptec AHA1542 support
! CONFIG_SCSI_AHA1542 y/n n
Adaptec AHA1740 support
! CONFIG_SCSI_AHA1740 y/n n
Future Domain SCSI support
! CONFIG_SCSI_FUTURE_DOMAIN y/n n
Seagate ST-02 and Future Domain TMC-8xx SCSI support
! CONFIG_SCSI_SEAGATE y/n n
UltraStor SCSI support
! CONFIG_SCSI_ULTRASTOR y/n n
7000FASST SCSI support
! CONFIG_SCSI_7000FASST y/n n
.
Filesystems
.
- Mount root initially readonly
- CONFIG_ROOT_RDONLY y/n n
Standard (minix) fs support
CONFIG_MINIX_FS y/n y
Extended fs support
! CONFIG_EXT_FS y/n n
Second extended fs support
! CONFIG_EXT2_FS y/n n
xiafs filesystem support
! CONFIG_XIA_FS y/n n
msdos fs support
CONFIG_MSDOS_FS y/n y
/proc filesystem support
CONFIG_PROC_FS y/n y
NFS filesystem support
! CONFIG_NFS_FS y/n n
ISO9660 cdrom filesystem support
! CONFIG_ISO9660_FS y/n n
.
Various character device drivers..
.
Keyboard meta-key sends ESC-prefix
! CONFIG_KBD_META y/n y
Autoconfigure serial IRQ lines at bootup
CONFIG_AUTO_IRQ y/n n
AST Fourport serial driver support
! CONFIG_AST_FOURPORT y/n n
Accent Async 4 serial support
CONFIG_ACCENT_ASYNC y/n n
Logitech busmouse support
--- 1,78 ----
General setup
.
Kernel math emulation
! CONFIG_MATH_EMULATION y/n y
Normal harddisk support
CONFIG_BLK_DEV_HD y/n y
XT harddisk support
CONFIG_BLK_DEV_XD y/n n
! TCP/IP version 1 Networking
! CONFIG_TCPIP y/n y
! TCP/IP version 2 Networking
! CONFIG_INET y/n n
Kernel profiling support
CONFIG_PROFILE y/n n
Limit memory to low 16MB
! CONFIG_MAX_16M y/n y
Use -m486 flag for 486-specific optimizations
CONFIG_M486 y/n y
:
SCSI support
.
SCSI support?
! CONFIG_SCSI y/n y
:
SCSI support type (disk, tape, CDrom)
.
Scsi disk support
! CONFIG_BLK_DEV_SD y/n y
Scsi tape support
! CONFIG_BLK_DEV_ST y/n y
Scsi CDROM support
! CONFIG_BLK_DEV_SR y/n y
.
SCSI low-level drivers
.
Adaptec AHA1542 support
! CONFIG_SCSI_AHA1542 y/n y
Adaptec AHA1740 support
! CONFIG_SCSI_AHA1740 y/n y
Future Domain SCSI support
! CONFIG_SCSI_FUTURE_DOMAIN y/n y
Seagate ST-02 and Future Domain TMC-8xx SCSI support
! CONFIG_SCSI_SEAGATE y/n y
UltraStor SCSI support
! CONFIG_SCSI_ULTRASTOR y/n y
7000FASST SCSI support
! CONFIG_SCSI_7000FASST y/n y
.
Filesystems
.
Standard (minix) fs support
CONFIG_MINIX_FS y/n y
Extended fs support
! CONFIG_EXT_FS y/n y
Second extended fs support
! CONFIG_EXT2_FS y/n y
xiafs filesystem support
! CONFIG_XIA_FS y/n y
msdos fs support
CONFIG_MSDOS_FS y/n y
/proc filesystem support
CONFIG_PROC_FS y/n y
NFS filesystem support
! CONFIG_NFS_FS y/n y
ISO9660 cdrom filesystem support
! CONFIG_ISO9660_FS y/n y
.
Various character device drivers..
.
Keyboard meta-key sends ESC-prefix
! CONFIG_KBD_META y/n n
Autoconfigure serial IRQ lines at bootup
CONFIG_AUTO_IRQ y/n n
AST Fourport serial driver support
! CONFIG_AST_FOURPORT y/n y
Accent Async 4 serial support
CONFIG_ACCENT_ASYNC y/n n
Logitech busmouse support
diff -c --recursive --new-file std/fs/nfs/proc.c linux/fs/nfs/proc.c
*** std/fs/nfs/proc.c Mon Mar 1 10:16:26 1993
--- linux/fs/nfs/proc.c Sat Apr 24 23:53:27 1993
***************
*** 16,21 ****
--- 16,22 ----
#define NFS_PROC_DEBUG
#endif
+ #include <linux/config.h>
#include <linux/param.h>
#include <linux/sched.h>
#include <linux/mm.h>
***************
*** 24,30 ****
--- 25,36 ----
#include <linux/errno.h>
#include <linux/string.h>
+ #ifdef CONFIG_TCPIP
#include <netinet/in.h>
+ #endif
+ #ifdef CONFIG_INET
+ #include <linux/in.h>
+ #endif
#ifdef NFS_PROC_DEBUG
static int proc_debug = 0;
diff -c --recursive --new-file std/fs/nfs/sock.c linux/fs/nfs/sock.c
*** std/fs/nfs/sock.c Mon Mar 1 10:16:26 1993
--- linux/fs/nfs/sock.c Sat Apr 24 21:15:57 1993
***************
*** 6,11 ****
--- 6,12 ----
* low-level nfs remote procedure call interface
*/
+ #include <linux/config.h>
#include <linux/sched.h>
#include <linux/nfs_fs.h>
#include <linux/errno.h>
***************
*** 13,21 ****
#include <linux/fcntl.h>
#include <asm/segment.h>
#include <netinet/in.h>
-
#include "../../net/kern_sock.h"
extern struct socket *socki_lookup(struct inode *inode);
--- 14,28 ----
#include <linux/fcntl.h>
#include <asm/segment.h>
+ #ifdef CONFIG_TCPIP /* FIXME: old-style NET */
#include <netinet/in.h>
#include "../../net/kern_sock.h"
+ #endif
+ #ifdef CONFIG_INET /* FIXME: new-style NET */
+ #include <linux/in.h>
+ #include <linux/net.h>
+ #endif
+
extern struct socket *socki_lookup(struct inode *inode);
diff -c --recursive --new-file std/fs/proc/Makefile linux/fs/proc/Makefile
*** std/fs/proc/Makefile Fri Dec 25 21:34:36 1992
--- linux/fs/proc/Makefile Sat Apr 24 19:39:35 1993
***************
*** 14,20 ****
.s.o:
$(AS) -o $*.o $<
! OBJS= inode.o root.o base.o mem.o link.o fd.o array.o kmsg.o
proc.o: $(OBJS)
$(LD) -r -o proc.o $(OBJS)
--- 14,20 ----
.s.o:
$(AS) -o $*.o $<
! OBJS= inode.o root.o base.o mem.o link.o fd.o array.o kmsg.o net.o
proc.o: $(OBJS)
$(LD) -r -o proc.o $(OBJS)
diff -c --recursive --new-file std/fs/proc/inode.c linux/fs/proc/inode.c
*** std/fs/proc/inode.c Thu Apr 8 06:17:54 1993
--- linux/fs/proc/inode.c Sat Apr 24 19:39:35 1993
***************
*** 100,111 ****
inode->i_op = &proc_root_inode_operations;
return;
}
! if (!pid) {
inode->i_mode = S_IFREG | 0444;
! inode->i_op = &proc_array_inode_operations;
! if (ino == 5) {
! inode->i_mode = S_IFREG | 0400;
! inode->i_op = &proc_kmsg_inode_operations;
}
return;
}
--- 100,125 ----
inode->i_op = &proc_root_inode_operations;
return;
}
! if ((ino >= 128) && (ino <= 160)) { /* files within /proc/net */
inode->i_mode = S_IFREG | 0444;
! inode->i_op = &proc_net_inode_operations;
! return;
! }
! if (!pid) {
! switch (ino) {
! case 5:
! inode->i_mode = S_IFREG | 0444;
! inode->i_op = &proc_kmsg_inode_operations;
! break;
! case 8: /* for the net directory */
! inode->i_mode = S_IFDIR | 0555;
! inode->i_nlink = 2;
! inode->i_op = &proc_net_inode_operations;
! break;
! default:
! inode->i_mode = S_IFREG | 0444;
! inode->i_op = &proc_array_inode_operations;
! break;
}
return;
}
diff -c --recursive --new-file std/fs/proc/net.c linux/fs/proc/net.c
*** std/fs/proc/net.c
--- linux/fs/proc/net.c Sat Apr 24 21:05:18 1993
***************
*** 0 ****
--- 1,211 ----
+ /*
+ * linux/fs/proc/net.c
+ *
+ * Copyright (C) 1991, 1992 Linus Torvalds
+ *
+ * gjh 3/'93 heim@peanuts.informatik.uni-tuebingen.de (Gerald J. Heim)
+ * most of this file is stolen from base.c
+ * it works, but you shouldn't use it as a guideline
+ * for new proc-fs entries. once i'll make it better.
+ * fvk 3/'93 waltje@uwalt.nl.mugnet.org (Fred N. van Kempen)
+ * cleaned up the whole thing, moved "net" specific code to
+ * the NET kernel layer (where it belonged in the first place).
+ * Michael K. Johnson (johnsonm@stolaf.edu) 3/93
+ * Added support from my previous inet.c. Cleaned things up
+ * quite a bit, modularized the code.
+ * fvk 4/'93 waltje@uwalt.nl.mugnet.org (Fred N. van Kempen)
+ * Renamed "route_get_info()" to "rt_get_info()" for consistency.
+ *
+ * proc net directory handling functions
+ */
+ #include <linux/autoconf.h>
+
+ #include <asm/segment.h>
+
+ #include <linux/errno.h>
+ #include <linux/sched.h>
+ #include <linux/proc_fs.h>
+ #include <linux/stat.h>
+
+ /* forward references */
+ static int proc_readnet(struct inode * inode, struct file * file,
+ char * buf, int count);
+ static int proc_readnetdir(struct inode *, struct file *,
+ struct dirent *, int);
+ static int proc_lookupnet(struct inode *,const char *,int,struct inode **);
+
+ /* the get_*_info() functions are in the net code, and are configured
+ in via the standard mechanism... */
+ #ifdef CONFIG_INET
+ extern int unix_get_info(char *);
+ extern int tcp_get_info(char *);
+ extern int udp_get_info(char *);
+ extern int raw_get_info(char *);
+ extern int arp_get_info(char *);
+ extern int dev_get_info(char *);
+ extern int rt_get_info(char *);
+ #endif /* CONFIG_INET */
+
+
+ static struct file_operations proc_net_operations = {
+ NULL, /* lseek - default */
+ proc_readnet, /* read - bad */
+ NULL, /* write - bad */
+ proc_readnetdir, /* readdir */
+ NULL, /* select - default */
+ NULL, /* ioctl - default */
+ NULL, /* mmap */
+ NULL, /* no special open code */
+ NULL, /* no special release code */
+ NULL /* can't fsync */
+ };
+
+ /*
+ * proc directories can do almost nothing..
+ */
+ struct inode_operations proc_net_inode_operations = {
+ &proc_net_operations, /* default net directory file-ops */
+ NULL, /* create */
+ proc_lookupnet, /* lookup */
+ NULL, /* link */
+ NULL, /* unlink */
+ NULL, /* symlink */
+ NULL, /* mkdir */
+ NULL, /* rmdir */
+ NULL, /* mknod */
+ NULL, /* rename */
+ NULL, /* readlink */
+ NULL, /* follow_link */
+ NULL, /* bmap */
+ NULL, /* truncate */
+ NULL /* permission */
+ };
+
+ static struct proc_dir_entry net_dir[] = {
+ { 1,2,".." },
+ { 8,1,"." }
+ #ifdef CONFIG_INET
+ ,{ 128,4,"unix" },
+ { 129,3,"arp" },
+ { 130,5,"route" },
+ { 131,3,"dev" },
+ { 132,3,"raw" },
+ { 133,3,"tcp" },
+ { 134,3,"udp" }
+ #endif /* CONFIG_INET */
+ };
+
+ #define NR_NET_DIRENTRY ((sizeof (net_dir))/(sizeof (net_dir[0])))
+
+
+ static int proc_lookupnet(struct inode * dir,const char * name, int len,
+ struct inode ** result)
+ {
+ unsigned int ino;
+ int i;
+
+ *result = NULL;
+ if (!dir)
+ return -ENOENT;
+ if (!S_ISDIR(dir->i_mode)) {
+ iput(dir);
+ return -ENOENT;
+ }
+ i = NR_NET_DIRENTRY;
+ while (i-- > 0 && !proc_match(len,name,net_dir+i))
+ /* nothing */;
+ if (i < 0) {
+ iput(dir);
+ return -ENOENT;
+ }
+ ino = net_dir[i].low_ino;
+ if (!(*result = iget(dir->i_sb,ino))) {
+ iput(dir);
+ return -ENOENT;
+ }
+ iput(dir);
+ return 0;
+ }
+
+ static int proc_readnetdir(struct inode * inode, struct file * filp,
+ struct dirent * dirent, int count)
+ {
+ struct proc_dir_entry * de;
+ unsigned int ino;
+ int i,j;
+
+ if (!inode || !S_ISDIR(inode->i_mode))
+ return -EBADF;
+ ino = inode->i_ino;
+ if (((unsigned) filp->f_pos) < NR_NET_DIRENTRY) {
+ de = net_dir + filp->f_pos;
+ filp->f_pos++;
+ i = de->namelen;
+ ino = de->low_ino;
+ put_fs_long(ino, &dirent->d_ino);
+ put_fs_word(i,&dirent->d_reclen);
+ put_fs_byte(0,i+dirent->d_name);
+ j = i;
+ while (i--)
+ put_fs_byte(de->name[i], i+dirent->d_name);
+ return j;
+ }
+ return 0;
+ }
+
+
+ static int proc_readnet(struct inode * inode, struct file * file,
+ char * buf, int count)
+ {
+ char * page;
+ int length;
+ int end;
+ unsigned int ino;
+
+ if (count < 0)
+ return -EINVAL;
+ page = (char *) get_free_page(GFP_KERNEL);
+ if (!page)
+ return -ENOMEM;
+ ino = inode->i_ino;
+ switch (ino) {
+ #ifdef CONFIG_INET
+ case 128:
+ length = unix_get_info(page);
+ break;
+ case 129:
+ length = arp_get_info(page);
+ break;
+ case 130:
+ length = rt_get_info(page);
+ break;
+ case 131:
+ length = dev_get_info(page);
+ break;
+ case 132:
+ length = raw_get_info(page);
+ break;
+ case 133:
+ length = tcp_get_info(page);
+ break;
+ case 134:
+ length = udp_get_info(page);
+ break;
+ #endif /* CONFIG_INET */
+ default:
+ free_page((unsigned long) page);
+ return -EBADF;
+ }
+ if (file->f_pos >= length) {
+ free_page((unsigned long) page);
+ return 0;
+ }
+ if (count + file->f_pos > length)
+ count = length - file->f_pos;
+ end = count + file->f_pos;
+ memcpy_tofs(buf, page + file->f_pos, count);
+ free_page((unsigned long) page);
+ file->f_pos = end;
+ return count;
+
+ }
diff -c --recursive --new-file std/fs/proc/root.c linux/fs/proc/root.c
*** std/fs/proc/root.c Sun Feb 28 11:59:43 1993
--- linux/fs/proc/root.c Sat Apr 24 19:39:35 1993
***************
*** 58,64 ****
{ 4,7,"meminfo" },
{ 5,4,"kmsg" },
{ 6,7,"version" },
! { 7,4,"self" } /* will change inode # */
};
#define NR_ROOT_DIRENTRY ((sizeof (root_dir))/(sizeof (root_dir[0])))
--- 58,65 ----
{ 4,7,"meminfo" },
{ 5,4,"kmsg" },
{ 6,7,"version" },
! { 7,4,"self" }, /* will change inode # */
! { 8,3,"net" }
};
#define NR_ROOT_DIRENTRY ((sizeof (root_dir))/(sizeof (root_dir[0])))
diff -c --recursive --new-file std/include/linux/ddi.h linux/include/linux/ddi.h
*** std/include/linux/ddi.h
--- linux/include/linux/ddi.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,79 ----
+ /*
+ * ddi.h Define the structure for linking in I/O drivers into the
+ * operating system kernel. This method is currently only
+ * used by NET layer drivers, but it will be expanded into
+ * a link methos for ALL kernel-resident device drivers.
+ *
+ * Version: @(#)ddi.h 1.0.2 04/22/93
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ */
+ #ifndef _LINUX_DDI_H
+ #define _LINUX_DDI_H
+
+
+ /* DDI control block flags. */
+ #define DDI_FREADY 0x10000000 /* device is initialized */
+ #define DDI_FPRESENT 0x20000000 /* device hardware is present */
+ #define DDI_FBLKDEV 0x00000001 /* device has a BLK spec. file */
+ #define DDI_FCHRDEV 0x00000002 /* device has a CHR spec. file */
+
+ /* Various constants. */
+ #define DDI_MAXNAME 16 /* length of a DDI ID string */
+
+
+ /* This structure is used to set up a DDI driver. */
+ struct ddconf {
+ int ioaddr; /* main I/O (port) address */
+ int ioaux; /* auxiliary I/O (HD, AST) */
+ int irq; /* IRQ channel */
+ int dma; /* DMA channel to use */
+ unsigned long memsize; /* size of onboard memory */
+ unsigned long memaddr; /* base address of memory */
+ };
+
+
+ /* The DDI device control block. */
+ struct ddi_device {
+ char *title; /* title of the driver */
+ char name[DDI_MAXNAME]; /* unit name of the I/O driver */
+ short int unit; /* unit number of this driver */
+ short int nunits; /* number of units in driver */
+ int (*init)(struct ddi_device *); /* initialization func */
+ int (*handler)(int, ...); /* command handler */
+ short int major; /* driver major dev number */
+ short int minor; /* driver minor dev number */
+ unsigned long flags; /* various flags */
+ struct ddconf config; /* driver HW setup */
+ };
+
+
+ /* This structure is used to set up networking protocols. */
+ struct ddi_proto {
+ char *name; /* protocol name */
+ void (*init)(struct ddi_proto *); /* initialization func */
+ };
+
+
+ /* This structure is used to link a STREAMS interface. */
+ struct iflink {
+ char id[DDI_MAXNAME]; /* DDI ID string */
+ char stream[DDI_MAXNAME]; /* STREAMS interface name */
+ int family; /* address (protocol) family */
+ unsigned int flags; /* any flags needed (unused) */
+ };
+
+
+ /* DDI control requests. */
+ #define DDIOCSDBG 0x9000 /* set DDI debug level */
+ #define DDIOCGNAME 0x9001 /* get DDI ID name */
+ #define DDIOCGCONF 0x9002 /* get DDI HW config */
+ #define DDIOCSCONF 0x9003 /* set DDI HW config */
+
+
+ /* DDI global functions. */
+ extern void ddi_init(void);
+ extern struct ddi_device *ddi_map(const char *id);
+
+
+ #endif /* _LINUX_DDI_H */
diff -c --recursive --new-file std/include/linux/fs.h linux/include/linux/fs.h
*** std/include/linux/fs.h Thu Apr 22 10:06:20 1993
--- linux/include/linux/fs.h Sat Apr 24 19:39:35 1993
***************
*** 21,31 ****
* recompiled to take full advantage of the new limits..
*/
#undef NR_OPEN
! #define NR_OPEN 256 /* don't change - fd_set etc depend on this */
! #define NR_INODE 256 /* this should be bigger than NR_FILE */
! #define NR_FILE 128 /* this can well be larger on a larger system */
! #define NR_SUPER 16
#define NR_HASH 997
#define NR_FILE_LOCKS 32
#define BLOCK_SIZE 1024
--- 21,31 ----
* recompiled to take full advantage of the new limits..
*/
#undef NR_OPEN
! #define NR_OPEN 256
! #define NR_INODE 1024 /* changed for LINUX/Pro - FvK */
! #define NR_FILE 512 /* changed for LINUX/Pro - FvK */
! #define NR_SUPER 32 /* changed for LINUX/Pro - FvK */
#define NR_HASH 997
#define NR_FILE_LOCKS 32
#define BLOCK_SIZE 1024
diff -c --recursive --new-file std/include/linux/icmp.h linux/include/linux/icmp.h
*** std/include/linux/icmp.h
--- linux/include/linux/icmp.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,69 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions for the ICMP protocol.
+ *
+ * Version: @(#)icmp.h 1.0.1 03/21/93
+ *
+ * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_ICMP_H
+ #define _LINUX_ICMP_H
+
+ #define ICMP_ECHOREPLY 0
+ #define ICMP_DEST_UNREACH 3
+ #define ICMP_SOURCE_QUENCH 4
+ #define ICMP_REDIRECT 5
+ #define ICMP_ECHO 8
+ #define ICMP_TIME_EXCEEDED 11
+ #define ICMP_PARAMETERPROB 12
+ #define ICMP_TIMESTAMP 13
+ #define ICMP_TIMESTAMPREPLY 14
+ #define ICMP_INFO_REQUEST 15
+ #define ICMP_INFO_REPLY 16
+
+
+ /* Used by unreachable. */
+ #define ICMP_NET_UNREACH 0
+ #define ICMP_HOST_UNREACH 1
+ #define ICMP_PROT_UNREACH 2
+ #define ICMP_PORT_UNREACH 3 /* lots of room for confusion. */
+ #define ICMP_FRAG_NNEDED 4
+ #define ICMP_SR_FAILED 5
+ #define ICMP_NET_UNKNOWN 6
+ #define ICMP_HOST_UNKNOWN 7
+ #define ICMP_HOST_ISOLATED 8
+ #define ICMP_NET_ANO 9
+ #define ICMP_HOST_ANO 10
+ #define ICMP_NET_UNR_TOS 11
+ #define ICMP_HOST_UNR_TOS 12
+
+
+ struct icmp_header {
+ unsigned char type;
+ unsigned char code;
+ unsigned short checksum;
+ union {
+ struct {
+ unsigned short id;
+ unsigned short sequence;
+ } echo;
+ unsigned long gateway;
+ } un;
+ };
+
+
+ struct icmp_err {
+ int errno;
+ unsigned fatal:1;
+ };
+
+
+ #endif /* _LINUX_ICMP_H */
diff -c --recursive --new-file std/include/linux/if.h linux/include/linux/if.h
*** std/include/linux/if.h
--- linux/include/linux/if.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,147 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Global definitions for the INET interface module.
+ *
+ * Version: @(#)if.h 1.0.2 04/18/93
+ *
+ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988
+ * Ross Biro, <bir7@leland.Stanford.Edu>
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_IF_H
+ #define _LINUX_IF_H
+
+ #include <linux/types.h> /* for "caddr_t" et al */
+ #include <linux/socket.h> /* for "struct sockaddr" et al */
+
+
+ /* Structure defining a queue for a network interface. */
+ struct ifnet {
+ char *if_name; /* name, e.g. ``en'' or ``lo'' */
+ short if_unit; /* sub-unit for device driver */
+ short if_mtu; /* maximum transmission unit */
+ short if_flags; /* up/down, broadcast, etc. */
+ short if_timer; /* time 'til if_watchdog called */
+ int if_metric; /* routing metric (not used) */
+ struct ifaddr *if_addrlist; /* linked list of addrs per if */
+ struct ifqueue {
+ #ifdef not_yet_in_linux
+ struct mbuf *ifq_head;
+ struct mbuf *ifq_tail;
+ int ifq_len;
+ int ifq_maxlen;
+ int ifq_drops;
+ #endif
+ } if_snd; /* output queue */
+
+ /* Procedure handles. */
+ int (*if_init)(); /* init routine */
+ int (*if_output)(); /* output routine */
+ int (*if_ioctl)(); /* ioctl routine */
+ int (*if_reset)(); /* bus reset routine */
+ int (*if_watchdog)(); /* timer routine */
+
+ /* Generic interface statistics. */
+ int if_ipackets; /* packets recv'd on interface */
+ int if_ierrors; /* input errors on interface */
+ int if_opackets; /* packets sent on interface */
+ int if_oerrors; /* output errors on interface */
+ int if_collisions; /* collisions on CSMA i'faces */
+
+ /* Linked list: pointer to next interface. */
+ struct ifnet *if_next;
+ };
+
+ /* Standard interface flags. */
+ #define IFF_UP 0x1 /* interface is up */
+ #define IFF_BROADCAST 0x2 /* broadcast address valid */
+ #define IFF_DEBUG 0x4 /* turn on debugging */
+ #define IFF_LOOPBACK 0x8 /* is a loopback net */
+ #define IFF_POINTOPOINT 0x10 /* interface is has p-p link */
+ #define IFF_NOTRAILERS 0x20 /* avoid use of trailers */
+ #define IFF_RUNNING 0x40 /* resources allocated */
+ #define IFF_NOARP 0x80 /* no ARP protocol */
+
+ /* These are not yet used: */
+ #define IFF_PROMISC 0x100 /* recve all packets */
+ #define IFF_ALLMULTI 0x200 /* recve all multicast packets */
+
+
+ /*
+ * The ifaddr structure contains information about one address
+ * of an interface. They are maintained by the different address
+ * families, are allocated and attached when an address is set,
+ * and are linked together so all addresses for an interface can
+ * be located.
+ */
+ struct ifaddr {
+ struct sockaddr ifa_addr; /* address of interface */
+ union {
+ struct sockaddr ifu_broadaddr;
+ struct sockaddr ifu_dstaddr;
+ } ifa_ifu;
+ struct iface *ifa_ifp; /* back-pointer to interface */
+ struct ifaddr *ifa_next; /* next address for interface */
+ };
+ #define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */
+ #define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of link */
+
+ /*
+ * Interface request structure used for socket
+ * ioctl's. All interface ioctl's must have parameter
+ * definitions which begin with ifr_name. The
+ * remainder may be interface specific.
+ */
+ struct ifreq {
+ #define IFNAMSIZ 16
+ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ union {
+ struct sockaddr ifru_addr;
+ struct sockaddr ifru_dstaddr;
+ struct sockaddr ifru_broadaddr;
+ struct sockaddr ifru_netmask;
+ short ifru_flags;
+ int ifru_metric;
+ int ifru_mtu;
+ caddr_t ifru_data;
+ } ifr_ifru;
+ };
+ #define ifr_addr ifr_ifru.ifru_addr /* address */
+ #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-p lnk */
+ #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
+ #define ifr_netmask ifr_ifru.ifru_netmask /* interface net mask */
+ #define ifr_flags ifr_ifru.ifru_flags /* flags */
+ #define ifr_metric ifr_ifru.ifru_metric /* metric */
+ #define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
+ #define ifr_data ifr_ifru.ifru_data /* for use by interface */
+
+ /*
+ * Structure used in SIOCGIFCONF request.
+ * Used to retrieve interface configuration
+ * for machine (useful for programs which
+ * must know all networks accessible).
+ */
+ struct ifconf {
+ int ifc_len; /* size of buffer */
+ union {
+ caddr_t ifcu_buf;
+ struct ifreq *ifcu_req;
+ } ifc_ifcu;
+ };
+ #define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
+ #define ifc_req ifc_ifcu.ifcu_req /* array of structures */
+
+
+ /* BSD UNIX expects to find these here, so here we go: */
+ #include <linux/if_arp.h>
+ #include <linux/route.h>
+
+ #endif /* _NET_IF_H */
diff -c --recursive --new-file std/include/linux/if_arp.h linux/include/linux/if_arp.h
*** std/include/linux/if_arp.h
--- linux/include/linux/if_arp.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,83 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Global definitions for the ARP (RFC 826) protocol.
+ *
+ * Version: @(#)if_arp.h 1.0.1 04/16/93
+ *
+ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
+ * Portions taken from the KA9Q/NOS (v2.00m PA0GRI) source.
+ * Ross Biro, <bir7@leland.Stanford.Edu>
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_IF_ARP_H
+ #define _LINUX_IF_ARP_H
+
+ /* ARP protocol HARDWARE identifiers. */
+ #define ARPHRD_NETROM 0 /* from KA9Q: NET/ROM pseudo */
+ #define ARPHRD_ETHER 1 /* Ethernet 10Mbps */
+ #define ARPHRD_EETHER 2 /* Experimental Ethernet */
+ #define ARPHRD_AX25 3 /* AX.25 Level 2 */
+ #define ARPHRD_PRONET 4 /* PROnet token ring */
+ #define ARPHRD_CHAOS 5 /* Chaosnet */
+ #define ARPHRD_IEEE802 6 /* IEEE 802.2 Ethernet- huh? */
+ #define ARPHRD_ARCNET 7 /* ARCnet */
+ #define ARPHRD_APPLETLK 8 /* APPLEtalk */
+
+ /* ARP protocol opcodes. */
+ #define ARPOP_REQUEST 1 /* ARP request */
+ #define ARPOP_REPLY 2 /* ARP reply */
+ #define ARPOP_RREQUEST 3 /* RARP request */
+ #define ARPOP_RREPLY 4 /* RARP reply */
+
+
+ /*
+ * Address Resolution Protocol.
+ *
+ * See RFC 826 for protocol description. ARP packets are variable
+ * in size; the arphdr structure defines the fixed-length portion.
+ * Protocol type values are the same as those for 10 Mb/s Ethernet.
+ * It is followed by the variable-sized fields ar_sha, arp_spa,
+ * arp_tha and arp_tpa in that order, according to the lengths
+ * specified. Field names used correspond to RFC 826.
+ */
+ struct arphdr {
+ unsigned short ar_hrd; /* format of hardware address */
+ unsigned short ar_pro; /* format of protocol address */
+ unsigned char ar_hln; /* length of hardware address */
+ unsigned char ar_pln; /* length of protocol address */
+ unsigned short ar_op; /* ARP opcode (command) */
+
+ /* The rest is variable in size, according to the sizes above. */
+ #if 0
+ unsigned char ar_sha[]; /* sender hardware address */
+ unsigned char ar_spa[]; /* sender protocol address */
+ unsigned char ar_tha[]; /* target hardware address */
+ unsigned char ar_tpa[]; /* target protocol address */
+ #endif /* not actually included! */
+ };
+
+
+ /* ARP ioctl request. */
+ struct arpreq {
+ struct sockaddr arp_pa; /* protocol address */
+ struct sockaddr arp_ha; /* hardware address */
+ int arp_flags; /* flags */
+ };
+
+ /* ARP Flag values. */
+ #define ATF_INUSE 0x01 /* entry in use */
+ #define ATF_COM 0x02 /* completed entry (ha valid) */
+ #define ATF_PERM 0x04 /* permanent entry */
+ #define ATF_PUBL 0x08 /* publish entry */
+ #define ATF_USETRAILERS 0x10 /* has requested trailers */
+
+
+ #endif /* _LINUX_IF_ARP_H */
diff -c --recursive --new-file std/include/linux/if_ether.h linux/include/linux/if_ether.h
*** std/include/linux/if_ether.h
--- linux/include/linux/if_ether.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,88 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Global definitions for the Ethernet IEE 802.3 interface.
+ *
+ * Version: @(#)if_ether.h 1.0.1 03/15/93
+ *
+ * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_IF_ETHER_H
+ #define _LINUX_IF_ETHER_H
+
+
+ /* IEEE 802.3 Ethernet magic constants. */
+ #define ETH_ALEN 6 /* #bytes in eth addr */
+ #define ETH_HLEN 14 /* #bytes in eth header */
+ #define ETH_ZLEN 64 /* min #bytes in frame */
+ #define ETH_FLEN 1536 /* max #bytes in frame */
+ #define ETH_DLEN (ETH_FLEN - ETH_HLEN) /* max #bytes of data */
+
+ /* These are the defined Ethernet Protocol ID's. */
+ #define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */
+ #define ETH_P_ECHO 0x0200 /* Ethernet Echo packet */
+ #define ETH_P_PUP 0x0400 /* Xerox PUP packet */
+ #define ETH_P_IP 0x0800 /* Internet Protocol packet */
+ #define ETH_P_ARP 0x0806 /* Address Resolution packet */
+ #define ETH_P_RARP 0x0835 /* Reverse Addr Res packet */
+
+ /* Define the Ethernet Broadcast Address (48 bits set to "1"). */
+ #define ETH_A_BCAST "\377\377\377\377\377\377"
+
+ /* This is an Ethernet frame header. */
+ struct ethhdr {
+ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
+ unsigned char h_source[ETH_ALEN]; /* source ether addr */
+ unsigned short h_proto; /* packet type ID field */
+ };
+
+ /* This is the complete Ethernet frame. */
+ struct ethframe {
+ struct ethhdr f_hdr; /* frame header */
+ char f_data[ETH_DLEN]; /* frame data (variable)*/
+ };
+
+
+ /* Receiver modes */
+ #define ETH_MODE_MONITOR 1 /* Monitor mode - no receive */
+ #define ETH_MODE_PHYS 2 /* Physical address receive only */
+ #define ETH_MODE_BCAST 3 /* Broadcast receive + mode 2 */
+ #define ETH_MODE_MCAST 4 /* Multicast receive + mode 3 */
+ #define ETH_MODE_PROMISC 5 /* Promiscuous mode - receive all */
+
+
+ /* Ethernet statistics collection data. */
+ struct enet_statistics{
+ int rx_packets; /* total packets received */
+ int tx_packets; /* total packets transmitted */
+ int rx_errors; /* bad packets received */
+ int tx_errors; /* packet transmit problems */
+ int rx_dropped; /* no space in linux buffers */
+ int tx_dropped; /* no space available in linux */
+ int multicast; /* multicast packets received */
+ int collisions;
+
+ /* detailed rx_errors: */
+ int rx_length_errors;
+ int rx_over_errors; /* receiver ring buff overflow */
+ int rx_crc_errors; /* recved pkt with crc error */
+ int rx_frame_errors; /* recv'd frame alignment error */
+ int rx_fifo_errors; /* recv'r fifo overrun */
+ int rx_missed_errors; /* receiver missed packet */
+
+ /* detailed tx_errors */
+ int tx_aborted_errors;
+ int tx_carrier_errors;
+ int tx_fifo_errors;
+ int tx_heartbeat_errors;
+ int tx_window_errors;
+ };
+
+ #endif /* _LINUX_IF_ETHER_H */
diff -c --recursive --new-file std/include/linux/in.h linux/include/linux/in.h
*** std/include/linux/in.h
--- linux/include/linux/in.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,171 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions of the Internet Protocol.
+ *
+ * Version: @(#)in.h 1.0.1 04/21/93
+ *
+ * Authors: Original taken from the GNU Project <netinet/in.h> file.
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_IN_H
+ #define _LINUX_IN_H
+
+
+ /* Standard well-defined IP protocols. */
+ enum {
+ IPPROTO_IP = 0, /* Dummy protocol for TCP */
+ IPPROTO_ICMP = 1, /* Internet Control Message Protocol */
+ IPPROTO_GGP = 2, /* Gateway Protocol (deprecated) */
+ IPPROTO_TCP = 6, /* Transmission Control Protocol */
+ IPPROTO_EGP = 8, /* Exterior Gateway Protocol */
+ IPPROTO_PUP = 12, /* PUP protocol */
+ IPPROTO_UDP = 17, /* User Datagram Protocol */
+ IPPROTO_IDP = 22, /* XNS IDP protocol */
+
+ IPPROTO_RAW = 255, /* Raw IP packets */
+ IPPROTO_MAX
+ };
+
+
+ /* Internet address. */
+ struct in_addr {
+ unsigned long int s_addr;
+ };
+
+
+ /* Structure describing an Internet (IP) socket address. */
+ #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
+ struct sockaddr_in {
+ short int sin_family; /* Address family */
+ unsigned short int sin_port; /* Port number */
+ struct in_addr sin_addr; /* Internet address */
+
+ /* Pad to size of `struct sockaddr'. */
+ unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
+ sizeof(unsigned short int) - sizeof(struct in_addr)];
+ };
+ #define sin_zero __pad /* for BSD UNIX comp. -FvK */
+
+
+ /*
+ * Definitions of the bits in an Internet address integer.
+ * On subnets, host and network parts are found according
+ * to the subnet mask, not these masks.
+ */
+ #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
+ #define IN_CLASSA_NET 0xff000000
+ #define IN_CLASSA_NSHIFT 24
+ #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
+ #define IN_CLASSA_MAX 128
+
+ #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
+ #define IN_CLASSB_NET 0xffff0000
+ #define IN_CLASSB_NSHIFT 16
+ #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
+ #define IN_CLASSB_MAX 65536
+
+ #define IN_CLASSC(a) ((((long int) (a)) & 0xc0000000) == 0xc0000000)
+ #define IN_CLASSC_NET 0xffffff00
+ #define IN_CLASSC_NSHIFT 8
+ #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
+
+ #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) = 0xe0000000)
+ #define IN_MULTICAST(a) IN_CLASSD(a)
+
+ #define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xe0000000) = 0xe0000000)
+ #define IN_BADCLASS(a) ((((long int) (a)) & 0xf0000000) = 0xf0000000)
+
+ /* Address to accept any incoming messages. */
+ #define INADDR_ANY ((unsigned long int) 0x00000000)
+
+ /* Address to send to all hosts. */
+ #define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
+
+ /* Address indicating an error return. */
+ #define INADDR_NONE 0xffffffff
+
+ /* Network number for local host loopback. */
+ #define IN_LOOPBACKNET 127
+
+ /* Address to loopback in software to local host. */
+ #define INADDR_LOOPBACK 0x7f000001 /* 127.0.0.1 */
+
+
+ /*
+ * Options for use with `getsockopt' and `setsockopt' at
+ * the IP level. LINUX does not yet have the IP_OPTIONS
+ * option (grin), so we undefine it for now.- HJ && FvK
+ */
+ #if 0
+ # define IP_OPTIONS 1 /* IP per-packet options */
+ #endif
+ #define IP_HDRINCL 2 /* raw packet header option */
+
+
+ /* Linux Internet number representation function declarations. */
+ #undef ntohl
+ #undef ntohs
+ #undef htonl
+ #undef htons
+
+ extern unsigned long int ntohl(unsigned long int);
+ extern unsigned short int ntohs(unsigned short int);
+ extern unsigned long int htonl(unsigned long int);
+ extern unsigned short int htons(unsigned short int);
+
+ static __inline__ unsigned long int
+ __ntohl(unsigned long int x)
+ {
+ register unsigned long int tmp __asm__ ("ax") = x;
+ __asm__ __volatile__ ("xchgb %%al,%%ah\n\t" /* swap lower bytes */
+ "rorl $16,%%eax\n\t" /* swap words */
+ "xchgb %%al,%%ah\n\t" /* swap higher bytes */
+ : "=a" (tmp) : "a" (tmp) );
+ return(tmp);
+ }
+
+ static __inline__ unsigned short int
+ __ntohs(unsigned short int x)
+ {
+ register unsigned short int tmp __asm__ ("ax") = x;
+ __asm__ __volatile__ ("xchgb %%al,%%ah\n\t" /* swap bytes */
+ : "=a" (tmp) : "a" (tmp));
+ return(tmp);
+ }
+
+ static __inline__ unsigned long int
+ __htonl(unsigned long int x)
+ {
+ register unsigned long int tmp __asm__ ("ax") = x;
+ __asm__ __volatile__ ("xchgb %%al,%%ah\n\t" /* swap lower bytes */
+ "rorl $16,%%eax\n\t" /* swap words */
+ "xchgb %%al,%%ah\n\t" /* swap higher bytes */
+ : "=a" (tmp) : "a" (tmp));
+ return(tmp);
+ }
+
+ static __inline__ unsigned short int
+ __htons(unsigned short int x)
+ {
+ register unsigned short int tmp __asm__ ("ax") = x;
+ __asm__ __volatile__ ("xchgb %%al,%%ah\n\t" /* swap bytes */
+ : "=a" (tmp) : "a" (tmp));
+ return(tmp);
+ }
+
+ #ifdef __OPTIMIZE__
+ # define ntohl(x) __ntohl((x))
+ # define ntohs(x) __ntohs((x))
+ # define htonl(x) __htonl((x))
+ # define htons(x) __htons((x))
+ #endif
+
+ #endif /* _LINUX_IN_H */
diff -c --recursive --new-file std/include/linux/ip.h linux/include/linux/ip.h
*** std/include/linux/ip.h
--- linux/include/linux/ip.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,81 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions for the IP protocol.
+ *
+ * Version: @(#)ip.h 1.0.1 03/21/93
+ *
+ * Authors: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_IP_H
+ #define _LINUX_IP_H
+
+
+ #define IPOPT_END 0
+ #define IPOPT_NOOP 1
+ #define IPOPT_SEC 130
+ #define IPOPT_LSRR 131
+ #define IPOPT_SSRR 137
+ #define IPOPT_RR 7
+ #define IPOPT_SID 136
+ #define IPOPT_TIMESTAMP 68
+
+
+ struct timestamp {
+ unsigned char len;
+ unsigned char ptr;
+ union {
+ unsigned char flags:4,
+ overflow:4;
+ unsigned char full_char;
+ } x;
+ unsigned long data[9];
+ };
+
+
+ #define MAX_ROUTE 16
+
+ struct route {
+ char route_size;
+ char pointer;
+ unsigned long route[MAX_ROUTE];
+ };
+
+
+ struct options {
+ struct route record_route;
+ struct route loose_route;
+ struct route strict_route;
+ struct timestamp tstamp;
+ unsigned short security;
+ unsigned short compartment;
+ unsigned short handling;
+ unsigned short stream;
+ unsigned tcc;
+ };
+
+
+ struct ip_header {
+ unsigned char ihl:4,
+ version:4;
+ unsigned char tos;
+ unsigned short tot_len;
+ unsigned short id;
+ unsigned short frag_off;
+ unsigned char ttl;
+ unsigned char protocol;
+ unsigned short check;
+ unsigned long saddr;
+ unsigned long daddr;
+ /*The options start here. */
+ };
+
+
+ #endif /* _LINUX_IP_H */
diff -c --recursive --new-file std/include/linux/net.h linux/include/linux/net.h
*** std/include/linux/net.h
--- linux/include/linux/net.h Sat Apr 24 19:39:35 1993
***************
*** 0 ****
--- 1,130 ----
+ /*
+ * NET An implementation of the SOCKET network access protocol.
+ * This is the master header file for the Linux NET layer,
+ * or, in plain English: the networking handling part of the
+ * kernel.
+ *
+ * Version: @(#)net.h 1.0.1 04/22/93
+ *
+ * Authors: ???
+ * Ross Biro, <bir7@leland.Stanford.Edu>
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_NET_H
+ #define _LINUX_NET_H
+
+
+ #define NSOCKETS 128 /* should be dynamic, later... */
+ #define NPROTO 16 /* should be enough for now.. */
+ #define SOCKET_MAJOR 16 /* Linux VFS major dev number */
+
+
+ #define SYS_SOCKET 1 /* sys_socket(2) */
+ #define SYS_BIND 2 /* sys_bind(2) */
+ #define SYS_CONNECT 3 /* sys_connect(2) */
+ #define SYS_LISTEN 4 /* sys_listen(2) */
+ #define SYS_ACCEPT 5 /* sys_accept(2) */
+ #define SYS_GETSOCKNAME 6 /* sys_getsockname(2) */
+ #define SYS_GETPEERNAME 7 /* sys_getpeername(2) */
+ #define SYS_SOCKETPAIR 8 /* sys_socketpair(2) */
+ #define SYS_SEND 9 /* sys_send(2) */
+ #define SYS_RECV 10 /* sys_recv(2) */
+ #define SYS_SENDTO 11 /* sys_sendto(2) */
+ #define SYS_RECVFROM 12 /* sys_recvfrom(2) */
+ #define SYS_SHUTDOWN 13 /* sys_shutdown(2) */
+ #define SYS_SETSOCKOPT 14 /* sys_setsockopt(2) */
+ #define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */
+
+
+ typedef enum {
+ SS_FREE = 0, /* not allocated */
+ SS_UNCONNECTED, /* unconnected to any socket */
+ SS_CONNECTING, /* in process of connecting */
+ SS_CONNECTED, /* connected to socket */
+ SS_DISCONNECTING, /* in process of disconnecting */
+ } socket_state;
+
+ #define SO_ACCEPTCON (1<<16) /* performed a listen */
+
+
+ /*
+ * Internel representation of a socket. not all the fields are used by
+ * all configurations:
+ *
+ * server client
+ * conn client connected to server connected to
+ * iconn list of clients -unused-
+ * awaiting connections
+ * wait sleep for clients, sleep for connection,
+ * sleep for i/o sleep for i/o
+ */
+ struct socket {
+ short type; /* SOCK_STREAM, ... */
+ socket_state state;
+ long flags;
+ struct proto_ops *ops; /* protocols do most everything */
+ void *data; /* protocol data */
+ struct socket *conn; /* server socket connected to */
+ struct socket *iconn; /* incomplete client conn.s */
+ struct socket *next;
+ struct wait_queue **wait; /* ptr to place to wait on */
+ void *dummy;
+ };
+
+ #define SOCK_INODE(S) ((struct inode *)(S)->dummy)
+ extern struct socket sockets[NSOCKETS];
+ #define last_socket (sockets + NSOCKETS - 1)
+
+
+ struct proto_ops {
+ int family;
+
+ int (*create) (struct socket *sock, int protocol);
+ int (*dup) (struct socket *newsock, struct socket *oldsock);
+ int (*release) (struct socket *sock, struct socket *peer);
+ int (*bind) (struct socket *sock, struct sockaddr *umyaddr,
+ int sockaddr_len);
+ int (*connect) (struct socket *sock, struct sockaddr *uservaddr,
+ int sockaddr_len, int flags);
+ int (*socketpair) (struct socket *sock1, struct socket *sock2);
+ int (*accept) (struct socket *sock, struct socket *newsock,
+ int flags);
+ int (*getname) (struct socket *sock, struct sockaddr *uaddr,
+ int *usockaddr_len, int peer);
+ int (*read) (struct socket *sock, char *ubuf, int size,
+ int nonblock);
+ int (*write) (struct socket *sock, char *ubuf, int size,
+ int nonblock);
+ int (*select) (struct socket *sock, int sel_type,
+ select_table *wait);
+ int (*ioctl) (struct socket *sock, unsigned int cmd,
+ unsigned long arg);
+ int (*listen) (struct socket *sock, int len);
+ int (*send) (struct socket *sock, void *buff, int len, int nonblock,
+ unsigned flags);
+ int (*recv) (struct socket *sock, void *buff, int len, int nonblock,
+ unsigned flags);
+ int (*sendto) (struct socket *sock, void *buff, int len, int nonblock,
+ unsigned flags, struct sockaddr *, int addr_len);
+ int (*recvfrom) (struct socket *sock, void *buff, int len, int nonblock,
+ unsigned flags, struct sockaddr *, int *addr_len);
+ int (*shutdown) (struct socket *sock, int flags);
+ int (*setsockopt) (struct socket *sock, int level, int optname,
+ char *optval, int optlen);
+ int (*getsockopt) (struct socket *sock, int level, int optname,
+ char *optval, int *optlen);
+ int (*fcntl) (struct socket *sock, unsigned int cmd,
+ unsigned long arg);
+ };
+
+
+ extern int sock_awaitconn(struct socket *mysock, struct socket *servsock);
+ extern int sock_register(int family, struct proto_ops *ops);
+
+
+ #endif /* _LINUX_NET_H */
diff -c --recursive --new-file std/include/linux/nfs_fs.h linux/include/linux/nfs_fs.h
*** std/include/linux/nfs_fs.h Tue Apr 6 20:57:21 1993
--- linux/include/linux/nfs_fs.h Sat Apr 24 19:39:35 1993
***************
*** 11,17 ****
#include <linux/nfs.h>
! #include <netinet/in.h>
#include <linux/nfs_mount.h>
/*
--- 11,17 ----
#include <linux/nfs.h>
! #include <linux/in.h>
#include <linux/nfs_mount.h>
/*
diff -c --recursive --new-file std/include/linux/proc_fs.h linux/include/linux/proc_fs.h
*** std/include/linux/proc_fs.h Tue Apr 6 20:57:21 1993
--- linux/include/linux/proc_fs.h Sat Apr 24 19:39:35 1993
***************
*** 25,34 ****
--- 25,36 ----
extern struct inode_operations proc_root_inode_operations;
extern struct inode_operations proc_base_inode_operations;
+ extern struct inode_operations proc_net_inode_operations;
extern struct inode_operations proc_mem_inode_operations;
extern struct inode_operations proc_array_inode_operations;
extern struct inode_operations proc_kmsg_inode_operations;
extern struct inode_operations proc_link_inode_operations;
extern struct inode_operations proc_fd_inode_operations;
+ extern struct inode_operations proc_net_inode_operations;
#endif
diff -c --recursive --new-file std/include/linux/route.h linux/include/linux/route.h
*** std/include/linux/route.h
--- linux/include/linux/route.h Sat Apr 24 19:39:36 1993
***************
*** 0 ****
--- 1,49 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Global definitions for the IP router interface.
+ *
+ * Version: @(#)route.h 1.0.2 04/16/93
+ *
+ * Authors: Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_ROUTE_H
+ #define _LINUX_ROUTE_H
+
+ #include <linux/if.h>
+
+
+ /*
+ * This structure gets passed by the SIOCADDRT and SIOCDELRT calls.
+ * It is not exactly identical to the BSD UNIX version of "rtentry",
+ * because BSD used /dev/kmem to figure out interface addresses. We
+ * do it cleaner, using a character array to stuff the name into.
+ * Also, to clean up things, the real IP routing table does not use
+ * the "struct sockaddr" addresses- it uses simple "unsigned long"
+ * fields. Routing is a protocol-dependent thing anyway. -FvK
+ */
+ struct rtentry {
+ char rt_dev[IFNAMSIZ];
+ struct sockaddr rt_dst;
+ struct sockaddr rt_gateway;
+ u_char rt_flags;
+ u_char rt_metric;
+ short rt_refcnt;
+ unsigned long rt_use;
+ };
+ #define RTF_UP 0x0001 /* route useable */
+ #define RTF_GATEWAY 0x0002 /* destination is a gateway */
+ #define RTF_HOST 0x0004 /* host entry (net otherwise) */
+ #define RTF_REINSTATE 0x0008 /* re-instate route after tmout */
+ #define RTF_DYNAMIC 0x0010 /* created dyn. (by redirect) */
+ #define RTF_MODIFIED 0x0020 /* modified dyn. (by redirect) */
+
+ #endif /* _LINUX_ROUTE_H */
diff -c --recursive --new-file std/include/linux/sock_ioctl.h linux/include/linux/sock_ioctl.h
*** std/include/linux/sock_ioctl.h Sun Feb 28 14:59:14 1993
--- linux/include/linux/sock_ioctl.h Sat Apr 24 19:39:36 1993
***************
*** 1,35 ****
- #ifndef _LINUX_SOCK_IOCTL_H
- #define _LINUX_SOCK_IOCTL_H
-
- #define MAX_IP_NAME 20
- /* some ioctl. Their values are not special. */
- #define IP_SET_DEV 0x2401
-
- struct ip_config
- {
- char name[MAX_IP_NAME];
- unsigned long paddr;
- unsigned long router;
- unsigned long net;
- unsigned long up:1,destroy:1;
- };
-
- #define SIOCSARP 0x2501
- #define SIOCGARP 0x2502
- #define SIOCDARP 0x2503
-
- /*
- * ARP ioctl request
- */
- struct arpreq {
- struct sockaddr arp_pa; /* protocol address */
- struct sockaddr arp_ha; /* hardware address */
- int arp_flags; /* flags */
- };
-
- #define ATF_COM 0x02
- #define ATF_PERM 0x04
- #define ATF_PUBL 0x08
- #define ATF_USETRAILERS 0x10
-
- #endif
--- 0 ----
diff -c --recursive --new-file std/include/linux/socket.h linux/include/linux/socket.h
*** std/include/linux/socket.h Tue Nov 10 12:54:55 1992
--- linux/include/linux/socket.h Sat Apr 24 19:39:36 1993
***************
*** 1,51 ****
#ifndef _LINUX_SOCKET_H
#define _LINUX_SOCKET_H
struct sockaddr {
! unsigned short sa_family; /* address family, AF_xxx */
! char sa_data[14]; /* 14 bytes of protocol address */
};
! /*
! * socket types
! */
! #define SOCK_STREAM 1 /* stream (connection) socket */
! #define SOCK_DGRAM 2 /* datagram (connectionless) socket */
! #define SOCK_RAW 3 /* raw socket */
! #define SOCK_RDM 4 /* reliably-delivered message */
! #define SOCK_SEQPACKET 5 /* sequential packet socket */
! #define SOCK_PACKET 10 /* linux specific way of getting
! packets at the dev level. For
! writing rarp and other similiar
! things on the user level. */
!
! /*
! * supported address families
! */
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_INET 2
! /*
! * protocol families, same as address families
! */
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
! /* flags we can use with send/ and recv. */
#define MSG_OOB 1
#define MSG_PEEK 2
! /* ioctl's */
! #define FIOSETOWN 0x8901 /* the 89 is for uniqueness.
! This should be somewhere else. */
! #define SIOCSPGRP 0x8902
! #define FIOGETOWN 0x8903 /* this too. */
! #define SIOCGPGRP 0x8904
! #define SIOCATMARK 0x8905
!
! /* for setsockoptions */
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
--- 1,43 ----
#ifndef _LINUX_SOCKET_H
#define _LINUX_SOCKET_H
+ #include <linux/sockios.h> /* the SIOCxxx I/O controls */
+
+
struct sockaddr {
! unsigned short sa_family; /* address family, AF_xxx */
! char sa_data[14]; /* 14 bytes of protocol address */
};
! /* Socket types. */
! #define SOCK_STREAM 1 /* stream (connection) socket */
! #define SOCK_DGRAM 2 /* datagram (conn.less) socket */
! #define SOCK_RAW 3 /* raw socket */
! #define SOCK_RDM 4 /* reliably-delivered message */
! #define SOCK_SEQPACKET 5 /* sequential packet socket */
! #define SOCK_PACKET 10 /* linux specific way of */
! /* getting packets at the dev */
! /* level. For writing rarp and */
! /* other similiar things on the */
! /* user level. */
!
! /* Supported address families. */
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_INET 2
! /* Protocol families, same as address families. */
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
! /* Flags we can use with send/ and recv. */
#define MSG_OOB 1
#define MSG_PEEK 2
! /* Setsockoptions(2) level. */
! #define SOL_SOCKET 1
! /* For setsockoptions(2) */
#define SO_DEBUG 1
#define SO_REUSEADDR 2
#define SO_TYPE 3
***************
*** 55,71 ****
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
! #define SO_OOBINLINE 10
! #define SO_NO_CHECK 11
! #define SO_PRIORITY 12
! #define SO_LINGER 13
! /* the different priorities */
#define SOPRI_INTERACTIVE 0
#define SOPRI_NORMAL 1
#define SOPRI_BACKGROUND 2
- /* setsockoptions level */
- #define SOL_SOCKET 1
-
#endif /* _LINUX_SOCKET_H */
--- 47,60 ----
#define SO_SNDBUF 7
#define SO_RCVBUF 8
#define SO_KEEPALIVE 9
! #define SO_OOBINLINE 10
! #define SO_NO_CHECK 11
! #define SO_PRIORITY 12
! #define SO_LINGER 13
! /* The various priorities. */
#define SOPRI_INTERACTIVE 0
#define SOPRI_NORMAL 1
#define SOPRI_BACKGROUND 2
#endif /* _LINUX_SOCKET_H */
diff -c --recursive --new-file std/include/linux/sockios.h linux/include/linux/sockios.h
*** std/include/linux/sockios.h
--- linux/include/linux/sockios.h Sat Apr 24 19:39:36 1993
***************
*** 0 ****
--- 1,72 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions of the socket-level I/O control calls.
+ *
+ * Version: @(#)sockios.h 1.0.2 03/09/93
+ *
+ * Authors: Ross Biro, <bir7@leland.Stanford.Edu>
+ * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_SOCKIOS_H
+ #define _LINUX_SOCKIOS_H
+
+ /* This section will go away soon! */
+ #if 1 /* FIXME: */
+ #define MAX_IP_NAME 20
+ #define IP_SET_DEV 0x2401
+
+ struct ip_config {
+ char name[MAX_IP_NAME];
+ unsigned long paddr;
+ unsigned long router;
+ unsigned long net;
+ unsigned long up:1,destroy:1;
+ };
+ #endif /* FIXME: */
+
+ /* Socket-level I/O control calls. */
+ #define FIOSETOWN 0x8901
+ #define SIOCSPGRP 0x8902
+ #define FIOGETOWN 0x8903
+ #define SIOCGPGRP 0x8904
+ #define SIOCATMARK 0x8905
+
+ /* Socket configuration controls. */
+ #define SIOCGIFNAME 0x8910 /* get iface name */
+ #define SIOCSIFLINK 0x8911 /* set iface channel */
+ #define SIOCGIFCONF 0x8912 /* get iface list */
+ #define SIOCGIFFLAGS 0x8913 /* get flags */
+ #define SIOCSIFFLAGS 0x8914 /* set flags */
+ #define SIOCGIFADDR 0x8915 /* get PA address */
+ #define SIOCSIFADDR 0x8916 /* set PA address */
+ #define SIOCGIFDSTADDR 0x8917 /* get remote PA address */
+ #define SIOCSIFDSTADDR 0x8918 /* set remote PA address */
+ #define SIOCGIFBRDADDR 0x8919 /* get broadcast PA address */
+ #define SIOCSIFBRDADDR 0x891a /* set broadcast PA address */
+ #define SIOCGIFNETMASK 0x891b /* get network PA mask */
+ #define SIOCSIFNETMASK 0x891c /* set network PA mask */
+ #define SIOCGIFMETRIC 0x891d /* get metric */
+ #define SIOCSIFMETRIC 0x891e /* set metric */
+ #define SIOCGIFMEM 0x891f /* get memory address (BSD) */
+ #define SIOCSIFMEM 0x8920 /* set memory address (BSD) */
+ #define SIOCGIFMTU 0x8921 /* get MTU size */
+ #define SIOCSIFMTU 0x8922 /* set MTU size */
+
+ /* Routing table calls. */
+ #define SIOCADDRT 0x8940 /* add routing table entry */
+ #define SIOCDELRT 0x8941 /* delete routing table entry */
+
+ /* ARP cache control calls. */
+ #define SIOCDARP 0x8950 /* delete ARP table entry */
+ #define SIOCGARP 0x8951 /* get ARP table entry */
+ #define SIOCSARP 0x8952 /* set ARP table entry */
+
+ #endif /* _LINUX_SOCKIOS_H */
diff -c --recursive --new-file std/include/linux/tcp.h linux/include/linux/tcp.h
*** std/include/linux/tcp.h
--- linux/include/linux/tcp.h Sat Apr 24 19:39:36 1993
***************
*** 0 ****
--- 1,61 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions for the TCP protocol.
+ *
+ * Version: @(#)tcp.h 1.0.1 03/21/93
+ *
+ * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_TCP_H
+ #define _LINUX_TCP_H
+
+
+ #define HEADER_SIZE 64 /* maximum header size */
+
+
+ struct tcp_header {
+ unsigned short source;
+ unsigned short dest;
+ unsigned long seq;
+ unsigned long ack_seq;
+ unsigned short res1:4,
+ doff:4,
+ fin:1,
+ syn:1,
+ rst:1,
+ psh:1,
+ ack:1,
+ urg:1,
+ res2:2;
+ unsigned short window;
+ unsigned short check;
+ unsigned short urg_ptr;
+ };
+
+
+ enum {
+ TCP_ESTABLISHED = 1,
+ TCP_SYN_SENT,
+ TCP_SYN_RECV,
+ #if 0
+ TCP_CLOSING, /* not a valid state, just a seperator so we can use
+ < tcp_closing or > tcp_closing for checks. */
+ #endif
+ TCP_FIN_WAIT1,
+ TCP_FIN_WAIT2,
+ TCP_TIME_WAIT,
+ TCP_CLOSE,
+ TCP_CLOSE_WAIT,
+ TCP_LAST_ACK,
+ TCP_LISTEN
+ };
+
+ #endif /* _LINUX_TCP_H */
diff -c --recursive --new-file std/include/linux/tty.h linux/include/linux/tty.h
*** std/include/linux/tty.h Thu Apr 22 20:32:21 1993
--- linux/include/linux/tty.h Sat Apr 24 19:48:45 1993
***************
*** 340,345 ****
--- 340,349 ----
extern void wait_until_sent(struct tty_struct * tty);
extern void copy_to_cooked(struct tty_struct * tty);
extern int tty_register_ldisc(int disc, struct tty_ldisc *new);
+ extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
+ int buflen);
+ extern int tty_write_data(struct tty_struct *tty, char *bufp, int buflen,
+ void (*callback)(void * data), void * callarg);
extern int tty_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
extern int is_orphaned_pgrp(int pgrp);
diff -c --recursive --new-file std/include/linux/udp.h linux/include/linux/udp.h
*** std/include/linux/udp.h
--- linux/include/linux/udp.h Sat Apr 24 19:39:36 1993
***************
*** 0 ****
--- 1,29 ----
+ /*
+ * INET An implementation of the TCP/IP protocol suite for the LINUX
+ * operating system. INET is implemented using the BSD Socket
+ * interface as the means of communication with the user level.
+ *
+ * Definitions for the UDP protocol.
+ *
+ * Version: @(#)udp.h 1.0.1 03/21/93
+ *
+ * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
+ *
+ * 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.
+ */
+ #ifndef _LINUX_UDP_H
+ #define _LINUX_UDP_H
+
+
+ struct udp_header {
+ unsigned short source;
+ unsigned short dest;
+ unsigned short len;
+ unsigned short check;
+ };
+
+
+ #endif /* _LINUX_UDP_H */
diff -c --recursive --new-file std/kernel/blk_drv/ramdisk.c linux/kernel/blk_drv/ramdisk.c
*** std/kernel/blk_drv/ramdisk.c Wed Feb 17 19:25:55 1993
--- linux/kernel/blk_drv/ramdisk.c Sat Apr 24 19:39:36 1993
***************
*** 2,7 ****
--- 2,10 ----
* linux/kernel/blk_drv/ramdisk.c
*
* Written by Theodore Ts'o, 12/2/91
+ *
+ * Modifications by Fred N. van Kempen to allow for bootable root
+ * disks (which are used in LINUX/Pro). Also some cleanups. 03/03/93
*/
***************
*** 14,22 ****
#include <asm/system.h>
#include <asm/segment.h>
! #define MAJOR_NR 1
#include "blk.h"
char *rd_start;
int rd_length = 0;
--- 17,30 ----
#include <asm/system.h>
#include <asm/segment.h>
! #define MAJOR_RAMDISK 1 /* should be in <linux/major.h> */
! #define MAJOR_FLOPPY 2 /* should be in <linux/major.h> */
! #define MINOR_RAMDISK 1
!
! #define MAJOR_NR MAJOR_RAMDISK /* weird hack- FvK */
#include "blk.h"
+
char *rd_start;
int rd_length = 0;
***************
*** 29,35 ****
INIT_REQUEST;
addr = rd_start + (CURRENT->sector << 9);
len = CURRENT->nr_sectors << 9;
! if ((MINOR(CURRENT->dev) != 1) || (addr+len > rd_start+rd_length)) {
end_request(0);
goto repeat;
}
--- 37,44 ----
INIT_REQUEST;
addr = rd_start + (CURRENT->sector << 9);
len = CURRENT->nr_sectors << 9;
! if ((MINOR(CURRENT->dev) != MINOR_RAMDISK) ||
! (addr+len > rd_start+rd_length)) {
end_request(0);
goto repeat;
}
***************
*** 42,48 ****
addr,
len);
} else
! panic("unknown ramdisk-command");
end_request(1);
goto repeat;
}
--- 51,57 ----
addr,
len);
} else
! panic("RAMDISK: unknown RAM disk command !\n");
end_request(1);
goto repeat;
}
***************
*** 67,77 ****
int i;
char *cp;
! if (register_blkdev(MAJOR_NR,"rd",&rd_fops)) {
! printk("Unable to get major %d for ramdisk\n",MAJOR_NR);
return 0;
}
! blk_dev[MAJOR_NR].request_fn = DEVICE_REQUEST;
rd_start = (char *) mem_start;
rd_length = length;
cp = rd_start;
--- 76,86 ----
int i;
char *cp;
! if (register_blkdev(MAJOR_RAMDISK,"rd",&rd_fops)) {
! printk("RAMDISK: Unable to get major %d.\n", MAJOR_RAMDISK);
return 0;
}
! blk_dev[MAJOR_RAMDISK].request_fn = DEVICE_REQUEST;
rd_start = (char *) mem_start;
rd_length = length;
cp = rd_start;
***************
*** 81,142 ****
}
/*
! * If the root device is the ram disk, try to load it.
* In order to do this, the root device is originally set to the
! * floppy, and we later change it to be ram disk.
*/
void rd_load(void)
{
struct buffer_head *bh;
struct minix_super_block s;
! int block = 512; /* Start at block 512 */
int i = 1;
int nblocks;
! char *cp; /* Move pointer */
!
! if (!rd_length)
! return;
! printk("Ram disk: %d bytes, starting at 0x%x\n", rd_length,
! (int) rd_start);
! if (MAJOR(ROOT_DEV) != 2)
! return;
! bh = breada(ROOT_DEV,block+1,block,block+2,-1);
! if (!bh) {
! printk("Disk error while looking for ramdisk!\n");
! return;
! }
! *((struct minix_super_block *) &s) = *((struct minix_super_block *) bh->b_data);
! brelse(bh);
! if (s.s_magic != MINIX_SUPER_MAGIC)
! /* No ram disk image present, assume normal floppy boot */
! return;
! nblocks = s.s_nzones << s.s_log_zone_size;
! if (nblocks > (rd_length >> BLOCK_SIZE_BITS)) {
! printk("Ram disk image too big! (%d blocks, %d avail)\n",
! nblocks, rd_length >> BLOCK_SIZE_BITS);
! return;
! }
! printk("Loading %d bytes into ram disk\n",
! nblocks << BLOCK_SIZE_BITS);
! cp = rd_start;
! while (nblocks) {
! if (nblocks > 2)
! bh = breada(ROOT_DEV, block, block+1, block+2, -1);
! else
! bh = bread(ROOT_DEV, block, BLOCK_SIZE);
if (!bh) {
! printk("I/O error on block %d, aborting load\n",
! block);
return;
}
! (void) memcpy(cp, bh->b_data, BLOCK_SIZE);
brelse(bh);
! if (!(nblocks-- & 15))
! printk(".");
! cp += BLOCK_SIZE;
! block++;
! i++;
}
- printk("\ndone\n");
- ROOT_DEV=0x0101;
}
--- 90,172 ----
}
/*
! * If the root device is the RAM disk, try to load it.
* In order to do this, the root device is originally set to the
! * floppy, and we later change it to be RAM disk.
*/
void rd_load(void)
{
struct buffer_head *bh;
struct minix_super_block s;
! int block, try;
int i = 1;
int nblocks;
! char *cp;
!
! /* If no RAM disk specified, give up early. */
! if (!rd_length) return;
! printk("RAMDISK: %d bytes, starting at 0x%x\n",
! rd_length, (int) rd_start);
!
! /* If we are doing a diskette boot, we might have to pre-load it. */
! if (MAJOR(ROOT_DEV) != MAJOR_FLOPPY) return;
!
! /*
! * Check for a super block on the diskette.
! * The old-style boot/root diskettes had their RAM image
! * starting at block 512 of the boot diskette. LINUX/Pro
! * uses the enire diskette as a file system, so in that
! * case, we have to look at block 0. Be intelligent about
! * this, and check both... - FvK
! */
! for (try = 0; try < 1000; try += 512) {
! block = try;
! bh = breada(ROOT_DEV,block+1,block,block+2,-1);
if (!bh) {
! printk("RAMDISK: I/O error while looking for super block!\n");
return;
}
!
! /* This is silly- why do we require it to be a MINIX FS? */
! *((struct minix_super_block *) &s) =
! *((struct minix_super_block *) bh->b_data);
brelse(bh);
! nblocks = s.s_nzones << s.s_log_zone_size;
! if (s.s_magic != MINIX_SUPER_MAGIC) {
! printk("RAMDISK: trying old-style RAM image.\n");
! continue;
! }
!
! if (nblocks > (rd_length >> BLOCK_SIZE_BITS)) {
! printk("RAMDISK: image too big! (%d/%d blocks)\n",
! nblocks, rd_length >> BLOCK_SIZE_BITS);
! return;
! }
! printk("RAMDISK: Loading %d blocks into RAM disk", nblocks);
!
! /* We found an image file system. Load it into core! */
! cp = rd_start;
! while (nblocks) {
! if (nblocks > 2)
! bh = breada(ROOT_DEV, block, block+1, block+2, -1);
! else
! bh = bread(ROOT_DEV, block, BLOCK_SIZE);
! if (!bh) {
! printk("RAMDISK: I/O error on block %d, aborting!\n",
! block);
! return;
! }
! (void) memcpy(cp, bh->b_data, BLOCK_SIZE);
! brelse(bh);
! if (!(nblocks-- & 15)) printk(".");
! cp += BLOCK_SIZE;
! block++;
! i++;
! }
! printk("\ndone\n");
!
! /* We loaded the file system image. Prepare for mounting it. */
! ROOT_DEV = ((MAJOR_RAMDISK << 8) | MINOR_RAMDISK);
! return;
}
}
diff -c --recursive --new-file std/kernel/chr_drv/tty_io.c linux/kernel/chr_drv/tty_io.c
*** std/kernel/chr_drv/tty_io.c Thu Apr 22 20:21:02 1993
--- linux/kernel/chr_drv/tty_io.c Sat Apr 24 19:39:36 1993
***************
*** 1391,1396 ****
--- 1391,1397 ----
while (count && VLEFT > 0) {
tty->write_q.buf[head++] = *p++;
head &= TTY_BUF_SIZE-1;
+ count--;
}
tty->write_q.head = head;
if (count) {
***************
*** 1400,1405 ****
--- 1401,1407 ----
tty->write_data_arg = callarg;
}
__asm__ __volatile__("pushl %0 ; popfl"::"r" (flags));
+ tty->write(tty);
return count;
}
diff -c --recursive --new-file std/net/tcp/arp.h linux/net/tcp/arp.h
*** std/net/tcp/arp.h Mon Jan 25 19:26:55 1993
--- linux/net/tcp/arp.h Sat Apr 24 20:26:41 1993
***************
*** 52,57 ****
--- 52,60 ----
#ifndef _TCP_ARP_H
#define _TCP_ARP_H
+ #include <linux/if_arp.h>
+
+
struct arp
{
unsigned short hrd;