Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
00c2e5a7
Commit
00c2e5a7
authored
Nov 23, 2007
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import 1.1.70
parent
ea8a68b9
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
429 additions
and
249 deletions
+429
-249
Makefile
Makefile
+1
-1
arch/i386/Makefile
arch/i386/Makefile
+4
-0
arch/i386/config.in
arch/i386/config.in
+14
-1
drivers/char/console.c
drivers/char/console.c
+168
-0
drivers/scsi/ChangeLog
drivers/scsi/ChangeLog
+1
-1
drivers/scsi/st.c
drivers/scsi/st.c
+1
-1
fs/msdos/mmap.c
fs/msdos/mmap.c
+0
-102
fs/proc/net.c
fs/proc/net.c
+32
-0
fs/sysv/mmap.c
fs/sysv/mmap.c
+0
-85
include/asm-alpha/types.h
include/asm-alpha/types.h
+29
-0
include/asm-i386/types.h
include/asm-i386/types.h
+17
-0
include/linux/ip.h
include/linux/ip.h
+19
-19
include/linux/proc_fs.h
include/linux/proc_fs.h
+10
-0
include/linux/tcp.h
include/linux/tcp.h
+10
-10
kernel/bios32.c
kernel/bios32.c
+0
-10
kernel/ksyms.c
kernel/ksyms.c
+15
-2
net/inet/af_inet.c
net/inet/af_inet.c
+9
-1
net/inet/dev.c
net/inet/dev.c
+2
-0
net/inet/igmp.c
net/inet/igmp.c
+1
-1
net/inet/igmp.h
net/inet/igmp.h
+1
-1
net/inet/ip.c
net/inet/ip.c
+2
-1
net/inet/ip_fw.c
net/inet/ip_fw.c
+73
-6
net/inet/route.c
net/inet/route.c
+16
-3
net/inet/udp.c
net/inet/udp.c
+4
-4
No files found.
Makefile
View file @
00c2e5a7
VERSION
=
1
PATCHLEVEL
=
1
SUBLEVEL
=
69
SUBLEVEL
=
70
ARCH
=
i386
...
...
arch/i386/Makefile
View file @
00c2e5a7
...
...
@@ -22,8 +22,12 @@ STRIP =strip
ifdef
CONFIG_M486
CFLAGS
:=
$(CFLAGS)
-m486
else
ifdef
CONFIG_M586
CFLAGS
:=
$(CFLAGS)
-mpentium
else
CFLAGS
:=
$(CFLAGS)
-m386
endif
endif
zBoot/zSystem
:
zBoot/*.c zBoot/*.S tools/zSystem
$(MAKE)
-C
zBoot
...
...
arch/i386/config.in
View file @
00c2e5a7
...
...
@@ -11,9 +11,20 @@ bool 'Normal harddisk support' CONFIG_BLK_DEV_HD y
bool 'XT harddisk support' CONFIG_BLK_DEV_XD n
bool 'Networking support' CONFIG_NET y
bool 'Limit memory to low 16MB' CONFIG_MAX_16M n
bool 'PCI bios support' CONFIG_PCI n
bool 'System V IPC' CONFIG_SYSVIPC y
bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF y
#bool 'Use -mpentium flag for Pentium-specific optimizations' CONFIG_M586 n
#if [ "$CONFIG_M586" = "n" ]; then
bool 'Use -m486 flag for 486-specific optimizations' CONFIG_M486 y
#fi
comment 'Screen saver mode'
bool 'VESA Power Saving Protocol Support' CONFIG_VESA_PSPM n
if [ "$CONFIG_VESA_PSPM" = "y" ]; then
bool 'VESA PSPM Force Off' CONFIG_PSPM_FORCE_OFF n
fi
if [ "$CONFIG_NET" = "y" ]; then
comment 'Networking options'
...
...
@@ -60,7 +71,9 @@ bool 'BusLogic SCSI support' CONFIG_SCSI_BUSLOGIC n
bool 'UltraStor 14F/34F support' CONFIG_SCSI_U14_34F n
bool 'Future Domain 16xx SCSI support' CONFIG_SCSI_FUTURE_DOMAIN n
bool 'Generic NCR5380 SCSI support' CONFIG_SCSI_GENERIC_NCR5380 n
bool 'NCR53c7,8xx SCSI support' CONFIG_SCSI_NCR53C7xx n
if [ "$CONFIG_PCI" = "y" ]; then
bool 'NCR53c7,8xx SCSI support' CONFIG_SCSI_NCR53C7xx n
fi
bool 'Always IN2000 SCSI support (test release)' CONFIG_SCSI_IN2000 n
bool 'PAS16 SCSI support' CONFIG_SCSI_PAS16 n
bool 'QLOGIC SCSI support' CONFIG_SCSI_QLOGIC n
...
...
drivers/char/console.c
View file @
00c2e5a7
...
...
@@ -160,7 +160,9 @@ static unsigned short *vc_scrbuf[MAX_NR_CONSOLES];
static
int
console_blanked
=
0
;
static
int
blankinterval
=
10
*
60
*
HZ
;
#ifndef CONFIG_VESA_PSPM
static
long
blank_origin
,
blank__origin
,
unblank_origin
;
#endif
struct
vc_data
{
unsigned
long
vc_screenbuf_size
;
...
...
@@ -288,6 +290,159 @@ static struct vc {
#define vcmode (vt_cons[currcons]->vc_mode)
#define structsize (sizeof(struct vc_data) + sizeof(struct vt_struct))
#ifdef CONFIG_VESA_PSPM
/*
* This section(s) handles the VESA Power Saving Protocol that let a *
* monitor be powered down whenever not needed for a longer time. *
* VESA protocol defines: *
* *
* Mode/Status HSync VSync Video *
* ---------------------------------------------- *
* "On" on on active *
* "Suspend" {either} on off blank *
* { or } off on blank *
* "Off" off off blank << PSPM_FORCE_OFF *
* *
* Original code taken from the Power Management Utility (PMU) of *
* Huang shi chao, delivered together with many new monitor models *
* capable of the VESA Power Saving Protocol. *
* Adapted to Linux by Christoph Rimek (chrimek@toppoint.de) 15-may-94 *
* Re-Adapted by Nicholas Leon (nicholas@neko.binary9.com) 10/94 *
* (with minor reorganization/changes) *
*/
static
void
vesa_blank
(
void
);
static
void
vesa_unblank
(
void
);
#define seq_port_reg (0x3c4)
/* Sequencer register select port */
#define seq_port_val (0x3c5)
/* Sequencer register value port */
#define video_misc_rd (0x3cc)
/* Video misc. read port */
#define video_misc_wr (0x3c2)
/* Video misc. write port */
/* structure holding original VGA register settings */
static
struct
{
unsigned
char
SeqCtrlIndex
;
/* Sequencer Index reg. */
unsigned
char
CrtCtrlIndex
;
/* CRT-Contr. Index reg. */
unsigned
char
CrtMiscIO
;
/* Miscellaneous register */
#ifdef CONFIG_PSPM_FORCE_OFF
unsigned
char
HorizontalTotal
;
/* CRT-Controller:00h */
unsigned
char
HorizDisplayEnd
;
/* CRT-Controller:01h */
unsigned
char
StartHorizRetrace
;
/* CRT-Controller:04h */
unsigned
char
EndHorizRetrace
;
/* CRT-Controller:05h */
#endif
unsigned
char
Overflow
;
/* CRT-Controller:07h */
unsigned
char
StartVertRetrace
;
/* CRT-Controller:10h */
unsigned
char
EndVertRetrace
;
/* CRT-Controller:11h */
unsigned
char
ModeControl
;
/* CRT-Controller:17h */
unsigned
char
ClockingMode
;
/* Seq-Controller:01h */
}
vga
;
/* routine to blank a vesa screen */
static
void
vesa_blank
(
void
)
{
/* save original values of VGA controller registers */
cli
();
vga
.
SeqCtrlIndex
=
inb_p
(
seq_port_reg
);
vga
.
CrtCtrlIndex
=
inb_p
(
video_port_reg
);
vga
.
CrtMiscIO
=
inb_p
(
video_misc_rd
);
sti
();
#ifdef CONFIG_PSPM_FORCE_OFF
outb_p
(
0x00
,
video_port_reg
);
/* HorizontalTotal */
vga
.
HorizontalTotal
=
inb_p
(
video_port_val
);
outb_p
(
0x01
,
video_port_reg
);
/* HorizDisplayEnd */
vga
.
HorizDisplayEnd
=
inb_p
(
video_port_val
);
outb_p
(
0x04
,
video_port_reg
);
/* StartHorizRetrace */
vga
.
StartHorizRetrace
=
inb_p
(
video_port_val
);
outb_p
(
0x05
,
video_port_reg
);
/* EndHorizRetrace */
vga
.
EndHorizRetrace
=
inb_p
(
video_port_val
);
#endif
outb_p
(
0x07
,
video_port_reg
);
/* Overflow */
vga
.
Overflow
=
inb_p
(
video_port_val
);
outb_p
(
0x10
,
video_port_reg
);
/* StartVertRetrace */
vga
.
StartVertRetrace
=
inb_p
(
video_port_val
);
outb_p
(
0x11
,
video_port_reg
);
/* EndVertRetrace */
vga
.
EndVertRetrace
=
inb_p
(
video_port_val
);
outb_p
(
0x17
,
video_port_reg
);
/* ModeControl */
vga
.
ModeControl
=
inb_p
(
video_port_val
);
outb_p
(
0x01
,
seq_port_reg
);
/* ClockingMode */
vga
.
ClockingMode
=
inb_p
(
seq_port_val
);
/* assure that video is enabled */
/* "0x20" is VIDEO_ENABLE_bit in register 01 of sequencer */
cli
();
outb_p
(
0x01
,
seq_port_reg
);
outb_p
(
vga
.
ClockingMode
|
0x20
,
seq_port_val
);
/* sti();
cli(); */
/* test for vertical retrace in process.... */
if
((
vga
.
CrtMiscIO
&
0x80
)
==
0x80
)
outb_p
(
vga
.
CrtMiscIO
&
0xef
,
video_misc_wr
);
/* Set <End of vertical retrace> to minimum (0) and *
* <Start of vertical Retrace> to maximum (incl. overflow) *
* Result: turn off vertical sync (VSync) pulse */
outb_p
(
0x10
,
video_port_reg
);
/* StartVertRetrace */
outb_p
(
0xff
,
video_port_val
);
/* maximum value */
outb_p
(
0x11
,
video_port_reg
);
/* EndVertRetrace */
outb_p
(
0x40
,
video_port_val
);
/* minimum (bits 0..3) */
outb_p
(
0x07
,
video_port_reg
);
/* Overflow */
outb_p
(
vga
.
Overflow
|
0x84
,
video_port_val
);
/* bits 9,10 of */
/* vert. retrace */
#ifdef CONFIG_PSPM_FORCE_OFF
/* Set <End of horizontal retrace> to minimum (0) and *
* <Start of horizontal Retrace> to maximum *
* Result: turn off horizontal sync (HSync) pulse */
outb_p
(
0x04
,
video_port_reg
);
/* StartHorizRetrace */
outb_p
(
0xff
,
video_port_val
);
/* maximum */
outb_p
(
0x05
,
video_port_reg
);
/* EndHorizRetrace */
outb_p
(
0x00
,
video_port_val
);
/* minimum (0) */
#endif
/* restore both index registers */
outb_p
(
vga
.
SeqCtrlIndex
,
seq_port_reg
);
outb_p
(
vga
.
CrtCtrlIndex
,
video_port_reg
);
sti
();
}
/* routine to unblank a vesa screen */
static
void
vesa_unblank
(
void
)
{
/* restore original values of VGA controller registers */
cli
();
outb_p
(
vga
.
CrtMiscIO
,
video_misc_wr
);
#ifdef CONFIG_PSPM_FORCE_OFF
outb_p
(
0x00
,
video_port_reg
);
/* HorizontalTotal */
outb_p
(
vga
.
HorizontalTotal
,
video_port_val
);
outb_p
(
0x01
,
video_port_reg
);
/* HorizDisplayEnd */
outb_p
(
vga
.
HorizDisplayEnd
,
video_port_val
);
outb_p
(
0x04
,
video_port_reg
);
/* StartHorizRetrace */
outb_p
(
vga
.
StartHorizRetrace
,
video_port_val
);
outb_p
(
0x05
,
video_port_reg
);
/* EndHorizRetrace */
outb_p
(
vga
.
EndHorizRetrace
,
video_port_val
);
#endif
outb_p
(
0x07
,
video_port_reg
);
/* Overflow */
outb_p
(
vga
.
Overflow
,
video_port_val
);
outb_p
(
0x10
,
video_port_reg
);
/* StartVertRetrace */
outb_p
(
vga
.
StartVertRetrace
,
video_port_val
);
outb_p
(
0x11
,
video_port_reg
);
/* EndVertRetrace */
outb_p
(
vga
.
EndVertRetrace
,
video_port_val
);
outb_p
(
0x17
,
video_port_reg
);
/* ModeControl */
outb_p
(
vga
.
ModeControl
,
video_port_val
);
outb_p
(
0x01
,
seq_port_reg
);
/* ClockingMode */
outb_p
(
vga
.
ClockingMode
,
seq_port_val
);
/* restore index/control registers */
outb_p
(
vga
.
SeqCtrlIndex
,
seq_port_reg
);
outb_p
(
vga
.
CrtCtrlIndex
,
video_port_reg
);
sti
();
}
#endif
/* CONFIG_VESA_PSPM */
static
void
*
memsetw
(
void
*
s
,
unsigned
short
c
,
unsigned
int
count
)
{
__asm__
(
"cld
\n\t
"
...
...
@@ -2032,7 +2187,9 @@ static void set_scrmem(int currcons, long offset)
void
blank_screen
(
void
)
{
#ifndef CONFIG_VESA_PSPM
int
currcons
;
#endif
if
(
console_blanked
)
return
;
...
...
@@ -2043,6 +2200,9 @@ void blank_screen(void)
}
timer_table
[
BLANK_TIMER
].
fn
=
unblank_screen
;
#ifdef CONFIG_VESA_PSPM
vesa_blank
();
#else
/* try not to lose information by blanking, and not to waste memory */
currcons
=
fg_console
;
has_scrolled
=
0
;
...
...
@@ -2053,14 +2213,17 @@ void blank_screen(void)
unblank_origin
=
origin
;
memsetw
((
void
*
)
blank_origin
,
BLANK
,
video_mem_term
-
blank_origin
);
hide_cursor
();
#endif
console_blanked
=
fg_console
+
1
;
}
void
unblank_screen
(
void
)
{
int
currcons
;
#ifndef CONFIG_VESA_PSPM
int
resetorg
;
long
offset
;
#endif
if
(
!
console_blanked
)
return
;
...
...
@@ -2075,6 +2238,10 @@ void unblank_screen(void)
timer_active
|=
1
<<
BLANK_TIMER
;
}
currcons
=
fg_console
;
#ifdef CONFIG_VESA_PSPM
vesa_unblank
();
console_blanked
=
0
;
#else
offset
=
0
;
resetorg
=
0
;
if
(
console_blanked
==
fg_console
+
1
&&
origin
==
unblank_origin
...
...
@@ -2091,6 +2258,7 @@ void unblank_screen(void)
set_cursor
(
fg_console
);
if
(
resetorg
)
__set_origin
(
blank__origin
);
#endif
}
void
update_screen
(
int
new_console
)
...
...
drivers/scsi/ChangeLog
View file @
00c2e5a7
...
...
@@ -3,7 +3,7 @@ Tue Nov 29 15:43:50 1994 Eric Youngdale (eric@andante.aib.com)
* Linux 1.1.68 released.
Add support for 12 byte vendor specific commands in scsi-generics,
more (i.e. the last mand
i
tory) low-level changes to support
more (i.e. the last mand
a
tory) low-level changes to support
loadable modules, plus a few other changes people have requested
lately. Changes by me (ERY) unless otherwise noted. Spelling
changes appear from some unknown corner of the universe.
...
...
drivers/scsi/st.c
View file @
00c2e5a7
...
...
@@ -472,7 +472,7 @@ scsi_tape_open(struct inode * inode, struct file * filp)
SCpnt
->
request
.
dev
=
-
1
;
/* Mark as not busy */
(
STp
->
buffer
)
->
in_use
=
0
;
STp
->
buffer
=
NULL
;
STp
->
density
=
0
;
/* Clear the erro
rne
us "residue" */
STp
->
density
=
0
;
/* Clear the erro
neo
us "residue" */
STp
->
write_prot
=
0
;
STp
->
block_size
=
0
;
STp
->
eof
=
ST_NOEOF
;
...
...
fs/msdos/mmap.c
deleted
100644 → 0
View file @
ea8a68b9
/*
* fs/msdos/mmap.c
*
* Written by Jacques Gelinas (jacques@solucorp.qc.ca)
* Inspired by fs/nfs/mmap.c (Jaon Tombs 15 Aug 1993)
*
* msdos mmap handling
*/
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/shm.h>
#include <linux/errno.h>
#include <linux/mman.h>
#include <linux/string.h>
#include <linux/malloc.h>
#include <asm/segment.h>
#include <asm/system.h>
#include <linux/msdos_fs.h>
/*
* Fill in the supplied page for mmap
*/
static
unsigned
long
msdos_file_mmap_nopage
(
struct
vm_area_struct
*
area
,
unsigned
long
address
,
unsigned
long
page
,
int
error_code
)
{
struct
inode
*
inode
=
area
->
vm_inode
;
unsigned
int
clear
;
int
pos
;
long
gap
;
/* distance from eof to pos */
address
&=
PAGE_MASK
;
pos
=
address
-
area
->
vm_start
+
area
->
vm_offset
;
clear
=
0
;
gap
=
inode
->
i_size
-
pos
;
if
(
gap
<=
0
){
/* mmaping beyond end of file */
clear
=
PAGE_SIZE
;
}
else
{
int
cur_read
;
int
need_read
;
struct
file
filp
;
if
(
gap
<
PAGE_SIZE
){
clear
=
PAGE_SIZE
-
gap
;
}
filp
.
f_pos
=
pos
;
need_read
=
PAGE_SIZE
-
clear
;
{
unsigned
long
cur_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
cur_read
=
msdos_file_read
(
inode
,
&
filp
,(
char
*
)
page
,
need_read
);
set_fs
(
cur_fs
);
}
if
(
cur_read
!=
need_read
){
printk
(
"MSDOS: Error while reading an mmap file %d <> %d
\n
"
,
cur_read
,
need_read
);
}
}
if
(
clear
>
0
){
memset
((
char
*
)
page
+
PAGE_SIZE
-
clear
,
0
,
clear
);
}
return
page
;
}
struct
vm_operations_struct
msdos_file_mmap
=
{
NULL
,
/* open */
NULL
,
/* close */
msdos_file_mmap_nopage
,
/* nopage */
NULL
,
/* wppage */
NULL
,
/* share */
NULL
,
/* unmap */
};
/*
* This is used for a general mmap of an msdos file
* Returns 0 if ok, or a negative error code if not.
*/
int
msdos_mmap
(
struct
inode
*
inode
,
struct
file
*
file
,
struct
vm_area_struct
*
vma
)
{
if
(
vma
->
vm_page_prot
&
PAGE_RW
)
/* only PAGE_COW or read-only supported now */
return
-
EINVAL
;
if
(
vma
->
vm_offset
&
(
inode
->
i_sb
->
s_blocksize
-
1
))
return
-
EINVAL
;
if
(
!
inode
->
i_sb
||
!
S_ISREG
(
inode
->
i_mode
))
return
-
EACCES
;
if
(
!
IS_RDONLY
(
inode
))
{
inode
->
i_atime
=
CURRENT_TIME
;
inode
->
i_dirt
=
1
;
}
vma
->
vm_inode
=
inode
;
inode
->
i_count
++
;
vma
->
vm_ops
=
&
msdos_file_mmap
;
return
0
;
}
fs/proc/net.c
View file @
00c2e5a7
...
...
@@ -50,6 +50,10 @@ extern int rarp_get_info(char *, char **, off_t, int);
extern
int
dev_get_info
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
rt_get_info
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
snmp_get_info
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
ip_acct_procinfo
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
ip_fw_blk_procinfo
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
ip_fw_fwd_procinfo
(
char
*
,
char
**
,
off_t
,
int
);
extern
int
ip_mc_procinfo
(
char
*
,
char
**
,
off_t
,
int
);
#endif
/* CONFIG_INET */
#ifdef CONFIG_IPX
extern
int
ipx_get_info
(
char
*
,
char
**
,
off_t
,
int
);
...
...
@@ -115,6 +119,16 @@ static struct proc_dir_entry net_dir[] = {
#ifdef CONFIG_INET_RARP
{
PROC_NET_RARP
,
4
,
"rarp"
},
#endif
#ifdef CONFIG_IP_MULTICAST
{
PROC_NET_IGMP
,
4
,
"igmp"
},
#endif
#ifdef CONFIG_IP_FIREWALL
{
PROC_NET_IPFWFWD
,
10
,
"ip_forward"
},
{
PROC_NET_IPBLFWD
,
8
,
"ip_block"
},
#endif
#ifdef CONFIG_IP_ACCT
{
PROC_NET_IPACCT
,
7
,
"ip_acct"
},
#endif
#endif
/* CONFIG_INET */
#ifdef CONFIG_IPX
{
PROC_NET_IPX_ROUTE
,
9
,
"ipx_route"
},
...
...
@@ -237,6 +251,24 @@ static int proc_readnet(struct inode * inode, struct file * file,
case
PROC_NET_SNMP
:
length
=
snmp_get_info
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
break
;
#ifdef CONFIG_IP_MULTICAST
case
PROC_NET_IGMP
:
length
=
ip_mc_procinfo
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
break
;
#endif
#ifdef CONFIG_IP_FIREWALL
case
PROC_NET_IPFWFWD
:
length
=
ip_fw_fwd_procinfo
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
break
;
case
PROC_NET_IPBLFWD
:
length
=
ip_fw_blk_procinfo
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
break
;
#endif
#ifdef CONFIG_IP_ACCT
case
PROC_NET_IPACCT
:
length
=
ip_acct_procinfo
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
break
;
#endif
#ifdef CONFIG_INET_RARP
case
PROC_NET_RARP
:
length
=
rarp_get_info
(
page
,
&
start
,
file
->
f_pos
,
thistime
);
...
...
fs/sysv/mmap.c
deleted
100644 → 0
View file @
ea8a68b9
/*
* linux/fs/sysv/mmap.c
*
* mm/memory.c, mm/mmap.c
* Copyright (C) 1991, 1992, 1993 Linus Torvalds
*
* nfs/mmap.c
* Copyright (C) 1993 Jon Tombs
*
* fs/msdos/mmap.c
* Copyright (C) 1994 Jacques Gelinas
*
* fs/sysv/mmap.c
* Copyright (C) 1994 Bruno Haible
*
* SystemV/Coherent mmap handling
*/
#include <asm/segment.h>
#include <linux/fs.h>
#include <linux/sysv_fs.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/malloc.h>
/*
* Fill in the supplied page for mmap
*/
static
unsigned
long
sysv_file_mmap_nopage
(
struct
vm_area_struct
*
area
,
unsigned
long
address
,
unsigned
long
page
,
int
no_share
)
{
int
remaining
,
count
,
old_fs
;
struct
file
filp
;
address
&=
PAGE_MASK
;
/* prepare a file pointer */
filp
.
f_pos
=
address
-
area
->
vm_start
+
area
->
vm_offset
;
filp
.
f_reada
=
0
;
remaining
=
area
->
vm_end
-
address
;
if
(
remaining
>
PAGE_SIZE
)
remaining
=
PAGE_SIZE
;
/* read from the file. page is in kernel space, not user space. */
old_fs
=
get_fs
();
set_fs
(
get_ds
());
count
=
sysv_file_read
(
area
->
vm_inode
,
&
filp
,
(
char
*
)
page
,
remaining
);
set_fs
(
old_fs
);
if
(
count
<
0
)
count
=
0
;
/* do nothing on I/O error ?? */
else
remaining
-=
count
;
if
(
remaining
>
0
)
memset
((
char
*
)
page
+
count
,
0
,
remaining
);
return
page
;
}
static
struct
vm_operations_struct
sysv_file_mmap
=
{
NULL
,
/* open */
NULL
,
/* close */
sysv_file_mmap_nopage
,
/* nopage */
NULL
,
/* wppage */
NULL
,
/* share */
NULL
,
/* unmap */
};
int
sysv_mmap
(
struct
inode
*
inode
,
struct
file
*
file
,
struct
vm_area_struct
*
vma
)
{
if
(
vma
->
vm_page_prot
&
PAGE_RW
)
/* only PAGE_COW or read-only supported right now */
return
-
EINVAL
;
if
(
vma
->
vm_offset
&
(
inode
->
i_sb
->
s_blocksize
-
1
))
return
-
EINVAL
;
if
(
!
inode
->
i_sb
||
!
S_ISREG
(
inode
->
i_mode
))
return
-
EACCES
;
if
(
!
IS_RDONLY
(
inode
))
{
inode
->
i_atime
=
CURRENT_TIME
;
inode
->
i_dirt
=
1
;
}
vma
->
vm_inode
=
inode
;
inode
->
i_count
++
;
vma
->
vm_ops
=
&
sysv_file_mmap
;
return
0
;
}
include/asm-alpha/types.h
View file @
00c2e5a7
#ifndef _ALPHA_TYPES_H
#define _ALPHA_TYPES_H
/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
typedef
signed
char
__s8
;
typedef
unsigned
char
__u8
;
typedef
signed
short
__s16
;
typedef
unsigned
short
__u16
;
typedef
signed
int
__s32
;
typedef
unsigned
int
__u32
;
/*
* There are 32-bit compilers for the alpha out there..
*/
#if ((~0UL) == 0xffffffff)
typedef
signed
long
long
__s64
;
typedef
unsigned
long
long
__u64
;
#else
typedef
signed
long
__s64
;
typedef
unsigned
long
__u64
;
#endif
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
...
...
include/asm-i386/types.h
View file @
00c2e5a7
#ifndef _I386_TYPES_H
#define _I386_TYPES_H
/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
typedef
signed
char
__s8
;
typedef
unsigned
char
__u8
;
typedef
signed
short
__s16
;
typedef
unsigned
short
__u16
;
typedef
signed
long
__s32
;
typedef
unsigned
long
__u32
;
typedef
signed
long
long
__s64
;
typedef
unsigned
long
long
__u64
;
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
...
...
include/linux/ip.h
View file @
00c2e5a7
...
...
@@ -29,24 +29,24 @@
struct
timestamp
{
u8
len
;
u8
ptr
;
__
u8
len
;
__
u8
ptr
;
union
{
#if defined(__i386__)
u8
flags
:
4
,
__
u8
flags
:
4
,
overflow:
4
;
#elif defined(__mc68000__)
u8
overflow
:
4
,
__
u8
overflow
:
4
,
flags:
4
;
#elif defined(__alpha__)
u8
flags
:
4
,
__
u8
flags
:
4
,
overflow:
4
;
#else
#error "Adjust this structure to match your CPU"
#endif
u8
full_char
;
__
u8
full_char
;
}
x
;
u32
data
[
9
];
__
u32
data
[
9
];
};
...
...
@@ -74,26 +74,26 @@ struct options {
struct
iphdr
{
#if defined(__i386__)
u8
ihl
:
4
,
__
u8
ihl
:
4
,
version:
4
;
#elif defined (__mc68000__)
u8
version
:
4
,
__
u8
version
:
4
,
ihl:
4
;
#elif defined (__alpha__)
u8
ihl
:
4
,
__
u8
ihl
:
4
,
version:
4
;
#else
#error "Adjust this structure to match your CPU"
#endif
u8
tos
;
u16
tot_len
;
u16
id
;
u16
frag_off
;
u8
ttl
;
u8
protocol
;
u16
check
;
u32
saddr
;
u32
daddr
;
__
u8
tos
;
__
u16
tot_len
;
__
u16
id
;
__
u16
frag_off
;
__
u8
ttl
;
__
u8
protocol
;
__
u16
check
;
__
u32
saddr
;
__
u32
daddr
;
/*The options start here. */
};
...
...
include/linux/proc_fs.h
View file @
00c2e5a7
...
...
@@ -58,6 +58,16 @@ enum net_directory_inos {
#ifdef CONFIG_INET_RARP
PROC_NET_RARP
,
#endif
#ifdef CONFIG_IP_MULTICAST
PROC_NET_IGMP
,
#endif
#ifdef CONFIG_IP_FIREWALL
PROC_NET_IPFWFWD
,
PROC_NET_IPBLFWD
,
#endif
#ifdef CONFIG_IP_ACCT
PROC_NET_IPACCT
,
#endif
#endif
#ifdef CONFIG_IPX
PROC_NET_IPX_ROUTE
,
...
...
include/linux/tcp.h
View file @
00c2e5a7
...
...
@@ -23,12 +23,12 @@
struct
tcphdr
{
u16
source
;
u16
dest
;
u32
seq
;
u32
ack_seq
;
__
u16
source
;
__
u16
dest
;
__
u32
seq
;
__
u32
ack_seq
;
#if defined(__i386__)
u16
res1
:
4
,
__
u16
res1
:
4
,
doff:
4
,
fin:
1
,
syn:
1
,
...
...
@@ -38,7 +38,7 @@ struct tcphdr {
urg:
1
,
res2:
2
;
#elif defined(__mc68000__)
u16
res2
:
2
,
__
u16
res2
:
2
,
urg:
1
,
ack:
1
,
psh:
1
,
...
...
@@ -48,7 +48,7 @@ struct tcphdr {
doff:
4
,
res1:
4
;
#elif defined(__alpha__)
u16
res1
:
4
,
__
u16
res1
:
4
,
doff:
4
,
fin:
1
,
syn:
1
,
...
...
@@ -60,9 +60,9 @@ struct tcphdr {
#else
#error "Adjust this structure for your cpu alignment rules"
#endif
u16
window
;
u16
check
;
u16
urg_ptr
;
__
u16
window
;
__
u16
check
;
__
u16
urg_ptr
;
};
...
...
kernel/bios32.c
View file @
00c2e5a7
...
...
@@ -41,16 +41,6 @@
#include <asm/segment.h>
/*
* It would seem some PCI bioses are buggy, so we don't actually use these
* routines unless we need to..
*/
#ifdef CONFIG_SCSI_NCR53C7xx
#define CONFIG_PCI
#else
#undef CONFIG_PCI
#endif
#define PCIBIOS_PCI_FUNCTION_ID 0xb1XX
#define PCIBIOS_PCI_BIOS_PRESENT 0xb101
#define PCIBIOS_FIND_PCI_DEVICE 0xb102
...
...
kernel/ksyms.c
View file @
00c2e5a7
...
...
@@ -34,12 +34,13 @@
#include <linux/net.h>
#include <linux/netdevice.h>
#endif
#ifdef CONFIG_PCI
#include <pci.h>
#endif
#include <asm/irq.h>
extern
char
floppy_track_buffer
[];
extern
void
set_device_ro
(
int
dev
,
int
flag
);
#include <linux/delay.h>
#include <linux/locks.h>
extern
void
*
sys_call_table
;
...
...
@@ -70,6 +71,18 @@ struct symbol_table symbol_table = { 0, 0, 0, /* for stacked module support */
X
(
EISA_bus
),
X
(
wp_works_ok
),
#ifdef CONFIG_PCI
/* PCI BIOS support */
X
(
pcibios_find_class
),
X
(
pcibios_find_device
),
X
(
pcibios_read_config_byte
),
X
(
pcibios_read_config_word
),
X
(
pcibios_read_config_dword
),
X
(
pcibios_write_config_byte
),
X
(
pcibios_write_config_word
),
X
(
pcibios_write_config_dword
),
#endif
/* process memory management */
X
(
verify_area
),
X
(
do_mmap
),
...
...
net/inet/af_inet.c
View file @
00c2e5a7
...
...
@@ -444,8 +444,15 @@ static int inet_listen(struct socket *sock, int backlog)
return
-
EAGAIN
;
/* We might as well re use these. */
/*
* note that the backlog is "unsigned char", so truncate it
* somewhere. We might as well truncate it to what everybody
* else does..
*/
if
(
backlog
>
5
)
backlog
=
5
;
sk
->
max_ack_backlog
=
backlog
;
if
(
sk
->
state
!=
TCP_LISTEN
)
if
(
sk
->
state
!=
TCP_LISTEN
)
{
sk
->
ack_backlog
=
0
;
sk
->
state
=
TCP_LISTEN
;
...
...
@@ -656,6 +663,7 @@ static int inet_create(struct socket *sock, int protocol)
sk
->
ip_mc_loop
=
0
;
sk
->
ip_mc_ttl
=
1
;
*
sk
->
ip_mc_name
=
0
;
sk
->
ip_mc_list
=
NULL
;
#endif
sk
->
state_change
=
def_callback1
;
...
...
net/inet/dev.c
View file @
00c2e5a7
...
...
@@ -1442,6 +1442,8 @@ int dev_ioctl(unsigned int cmd, void *arg)
case
SIOCSIFMEM
:
case
SIOCSIFMAP
:
case
SIOCSIFSLAVE
:
case
SIOCADDMULTI
:
case
SIOCDELMULTI
:
if
(
!
suser
())
return
-
EPERM
;
return
dev_ifsioc
(
arg
,
cmd
);
...
...
net/inet/igmp.c
View file @
00c2e5a7
...
...
@@ -5,7 +5,7 @@
* Alan Cox <Alan.Cox@linux.org>
*
* WARNING:
* This is a 'prelimary' implementation... on your own head
* This is a 'prelim
in
ary' implementation... on your own head
* be it.
*
* This program is free software; you can redistribute it and/or
...
...
net/inet/igmp.h
View file @
00c2e5a7
...
...
@@ -5,7 +5,7 @@
* Alan Cox <Alan.Cox@linux.org>
*
* WARNING:
* This is a 'prelimary' implementation... on your own head
* This is a 'prelim
in
ary' implementation... on your own head
* be it.
*
* This program is free software; you can redistribute it and/or
...
...
net/inet/ip.c
View file @
00c2e5a7
...
...
@@ -876,7 +876,7 @@ static struct sk_buff *ip_glue(struct ipq *qp)
fp
=
qp
->
fragments
;
while
(
fp
!=
NULL
)
{
if
(
count
+
fp
->
len
>
skb
->
len
)
if
(
count
+
fp
->
len
>
skb
->
len
)
{
printk
(
"Invalid fragment list: Fragment over size.
\n
"
);
ip_free
(
qp
);
...
...
@@ -1610,6 +1610,7 @@ int ip_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
skb
=
ip_defrag
(
iph
,
skb
,
dev
);
if
(
skb
==
NULL
)
return
0
;
skb
->
dev
=
dev
;
iph
=
skb
->
h
.
iph
;
}
...
...
net/inet/ip_fw.c
View file @
00c2e5a7
...
...
@@ -214,7 +214,7 @@ int ip_fw_chk(struct iphdr *ip, struct ip_fw *chain)
}
/*
* At this moment we surely know the protocol of this
* packet and we'll check if it matches,then proceed futher..
* packet and we'll check if it matches,then proceed fu
r
ther..
*/
if
(
proto
==
frwl_proto
)
{
...
...
@@ -387,7 +387,7 @@ void ip_acct_cnt(struct iphdr *ip,struct ip_fw *chain,int nh_conv)
}
/*
* At this moment we surely know the protocol of this
* packet and we'll check if it matches,then proceed futher..
* packet and we'll check if it matches,then proceed fu
r
ther..
*/
if
(
proto
==
frwl_proto
)
{
...
...
@@ -628,10 +628,7 @@ static int add_to_chain(struct ip_fw **chainptr, struct ip_fw *frwl)
if
(
chtmp_prev
)
chtmp_prev
->
next
=
ftmp
;
else
{
*
chainptr
=
ftmp
;
printk
(
"ip_fw: add_to_chain: Can't happen"
);
}
restore_flags
(
flags
);
return
(
0
);
}
...
...
@@ -866,7 +863,7 @@ int ip_fw_ctl(int stage, void *m, int len)
/*
* Here we really working hard-adding new elements
* to blocking/forwarding chains or deleting'em
* to blocking/forwarding chains or deleting
'em
*/
if
(
stage
==
IP_FW_ADD_BLK
||
stage
==
IP_FW_ADD_FWD
...
...
@@ -905,3 +902,73 @@ int ip_fw_ctl(int stage, void *m, int len)
return
(
EINVAL
);
}
#endif
/* CONFIG_IP_FIREWALL */
#if defined(CONFIG_IP_FIREWALL) || defined(CONFIG_IP_ACCT)
static
int
ip_chain_procinfo
(
struct
ip_fw
*
chain
,
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
)
{
off_t
pos
=
0
,
begin
=
0
;
struct
ip_fw
*
i
;
unsigned
long
flags
;
int
len
=
0
;
len
=
sprintf
(
buffer
,
"Firewall Rules
\n
"
);
save_flags
(
flags
);
cli
();
i
=
chain
;
while
(
i
!=
NULL
)
{
len
+=
sprintf
(
buffer
+
len
,
"%08lX/%08lX->%08lX/%08lX %X "
,
ntohl
(
i
->
src
.
s_addr
),
ntohl
(
i
->
src_mask
.
s_addr
),
ntohl
(
i
->
dst
.
s_addr
),
ntohl
(
i
->
dst_mask
.
s_addr
),
i
->
flags
);
len
+=
sprintf
(
buffer
+
len
,
"%u %u %lu %lu "
,
i
->
n_src_p
,
i
->
n_dst_p
,
i
->
p_cnt
,
i
->
b_cnt
);
len
+=
sprintf
(
buffer
+
len
,
"%u %u %u %u %u %u %u %u %u %u
\n
"
,
i
->
ports
[
0
],
i
->
ports
[
1
],
i
->
ports
[
2
],
i
->
ports
[
3
],
i
->
ports
[
4
],
i
->
ports
[
5
],
i
->
ports
[
6
],
i
->
ports
[
7
],
i
->
ports
[
8
],
i
->
ports
[
9
]);
pos
=
begin
+
len
;
if
(
pos
<
offset
)
{
len
=
0
;
begin
=
pos
;
}
if
(
pos
>
offset
+
length
)
break
;
i
=
i
->
next
;
}
restore_flags
(
flags
);
*
start
=
buffer
+
(
offset
-
begin
);
len
-=
(
offset
-
begin
);
if
(
len
>
length
)
len
=
length
;
return
len
;
}
#endif
#ifdef CONFIG_IP_ACCT
int
ip_acct_procinfo
(
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
)
{
return
ip_chain_procinfo
(
ip_acct_chain
,
buffer
,
start
,
offset
,
length
);
}
#endif
#ifdef CONFIG_IP_FIREWALL
int
ip_fw_blk_procinfo
(
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
)
{
return
ip_chain_procinfo
(
ip_fw_blk_chain
,
buffer
,
start
,
offset
,
length
);
}
int
ip_fw_fwd_procinfo
(
char
*
buffer
,
char
**
start
,
off_t
offset
,
int
length
)
{
return
ip_chain_procinfo
(
ip_fw_fwd_chain
,
buffer
,
start
,
offset
,
length
);
}
#endif
net/inet/route.c
View file @
00c2e5a7
...
...
@@ -23,6 +23,7 @@
* Alan Cox : MTU in route table
* Alan Cox : MSS actually. Also added the window
* clamper.
* Sam Lantinga : Fixed route matching in rt_del()
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
...
...
@@ -66,7 +67,7 @@ static struct rtable *rt_loopback = NULL;
* Remove a routing table entry.
*/
static
void
rt_del
(
unsigned
long
dst
)
static
void
rt_del
(
unsigned
long
dst
,
char
*
devname
)
{
struct
rtable
*
r
,
**
rp
;
unsigned
long
flags
;
...
...
@@ -82,7 +83,9 @@ static void rt_del(unsigned long dst)
cli
();
while
((
r
=
*
rp
)
!=
NULL
)
{
if
(
r
->
rt_dst
!=
dst
)
/* Make sure both the destination and the device match */
if
(
r
->
rt_dst
!=
dst
||
(
devname
!=
NULL
&&
strcmp
((
r
->
rt_dev
)
->
name
,
devname
)
!=
0
)
)
{
rp
=
&
r
->
rt_next
;
continue
;
...
...
@@ -467,9 +470,19 @@ static int rt_new(struct rtentry *r)
static
int
rt_kill
(
struct
rtentry
*
r
)
{
struct
sockaddr_in
*
trg
;
char
*
devname
;
int
err
;
trg
=
(
struct
sockaddr_in
*
)
&
r
->
rt_dst
;
rt_del
(
trg
->
sin_addr
.
s_addr
);
if
((
devname
=
r
->
rt_dev
)
!=
NULL
)
{
err
=
getname
(
devname
,
&
devname
);
if
(
err
)
return
err
;
}
rt_del
(
trg
->
sin_addr
.
s_addr
,
devname
);
if
(
devname
!=
NULL
)
putname
(
devname
);
return
0
;
}
...
...
net/inet/udp.c
View file @
00c2e5a7
...
...
@@ -563,9 +563,9 @@ int udp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
struct
sock
*
sk
;
struct
udphdr
*
uh
;
unsigned
short
ulen
;
int
addr_type
=
IS_MYADDR
;
int
addr_type
=
IS_MYADDR
;
if
(
skb
->
dev
->
pa_addr
!=
daddr
)
if
(
!
dev
||
dev
->
pa_addr
!=
daddr
)
addr_type
=
ip_chk_addr
(
daddr
);
/*
...
...
@@ -621,7 +621,7 @@ int udp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
else
skb1
=
skb
;
if
(
skb1
)
udp_deliver
(
sk
,
uh
,
skb1
,
skb
->
dev
,
saddr
,
daddr
,
len
);
udp_deliver
(
sk
,
uh
,
skb1
,
dev
,
saddr
,
daddr
,
len
);
sk
=
sknext
;
}
while
(
sknext
!=
NULL
);
...
...
@@ -648,7 +648,7 @@ int udp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
return
(
0
);
}
return
udp_deliver
(
sk
,
uh
,
skb
,
skb
->
dev
,
saddr
,
daddr
,
len
);
return
udp_deliver
(
sk
,
uh
,
skb
,
dev
,
saddr
,
daddr
,
len
);
}
static
int
udp_deliver
(
struct
sock
*
sk
,
struct
udphdr
*
uh
,
struct
sk_buff
*
skb
,
struct
device
*
dev
,
long
saddr
,
long
daddr
,
int
len
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment