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
7a303cfd
Commit
7a303cfd
authored
Jan 25, 2005
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://linux-mh.bkbits.net/bluetooth-2.6
into nuts.davemloft.net:/disk1/BK/net-2.6
parents
12bcbdd3
b8dcfacc
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
152 additions
and
79 deletions
+152
-79
MAINTAINERS
MAINTAINERS
+1
-1
arch/i386/mm/ioremap.c
arch/i386/mm/ioremap.c
+2
-1
arch/x86_64/kernel/early_printk.c
arch/x86_64/kernel/early_printk.c
+0
-3
arch/x86_64/kernel/traps.c
arch/x86_64/kernel/traps.c
+1
-1
arch/x86_64/mm/ioremap.c
arch/x86_64/mm/ioremap.c
+2
-1
drivers/net/tg3.c
drivers/net/tg3.c
+26
-13
drivers/net/tg3.h
drivers/net/tg3.h
+1
-0
drivers/net/tun.c
drivers/net/tun.c
+2
-0
include/asm-x86_64/numnodes.h
include/asm-x86_64/numnodes.h
+4
-0
include/linux/netfilter_ipv4/ip_conntrack.h
include/linux/netfilter_ipv4/ip_conntrack.h
+30
-27
include/linux/netfilter_ipv4/ip_conntrack_tftp.h
include/linux/netfilter_ipv4/ip_conntrack_tftp.h
+1
-1
include/linux/netfilter_ipv4/ipt_conntrack.h
include/linux/netfilter_ipv4/ipt_conntrack.h
+22
-1
include/linux/netfilter_ipv4/ipt_multiport.h
include/linux/netfilter_ipv4/ipt_multiport.h
+1
-0
kernel/kallsyms.c
kernel/kallsyms.c
+9
-1
net/8021q/vlanproc.h
net/8021q/vlanproc.h
+2
-2
net/core/netpoll.c
net/core/netpoll.c
+25
-16
net/ipv4/ip_output.c
net/ipv4/ip_output.c
+1
-0
net/ipv4/netfilter/ip_conntrack_irc.c
net/ipv4/netfilter/ip_conntrack_irc.c
+6
-1
net/ipv4/netfilter/ip_nat_irc.c
net/ipv4/netfilter/ip_nat_irc.c
+4
-1
net/ipv4/netfilter/ip_nat_rule.c
net/ipv4/netfilter/ip_nat_rule.c
+2
-2
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
+1
-0
net/ipv4/netfilter/ipt_multiport.c
net/ipv4/netfilter/ipt_multiport.c
+8
-7
net/ipv6/ip6_output.c
net/ipv6/ip6_output.c
+1
-0
No files found.
MAINTAINERS
View file @
7a303cfd
...
...
@@ -1798,7 +1798,7 @@ S: Maintained
PPP OVER ETHERNET
P: Michal Ostrowski
M: mostrows@s
tyx.uwaterloo.ca
M: mostrows@s
peakeasy.net
S: Maintained
PREEMPTIBLE KERNEL
...
...
arch/i386/mm/ioremap.c
View file @
7a303cfd
...
...
@@ -238,8 +238,9 @@ void iounmap(volatile void __iomem *addr)
}
if
((
p
->
flags
>>
20
)
&&
p
->
phys_addr
<
virt_to_phys
(
high_memory
)
-
1
)
{
/* p->size includes the guard page, but cpa doesn't like that */
change_page_attr
(
virt_to_page
(
__va
(
p
->
phys_addr
)),
p
->
size
>>
PAGE_SHIFT
,
(
p
->
size
-
PAGE_SIZE
)
>>
PAGE_SHIFT
,
PAGE_KERNEL
);
global_flush_tlb
();
}
...
...
arch/x86_64/kernel/early_printk.c
View file @
7a303cfd
...
...
@@ -198,9 +198,6 @@ int __init setup_early_printk(char *opt)
early_console
=
&
early_serial_console
;
}
else
if
(
!
strncmp
(
buf
,
"vga"
,
3
))
{
early_console
=
&
early_vga_console
;
}
else
{
early_console
=
NULL
;
return
-
1
;
}
early_console_initialized
=
1
;
register_console
(
early_console
);
...
...
arch/x86_64/kernel/traps.c
View file @
7a303cfd
...
...
@@ -917,7 +917,7 @@ void __init trap_init(void)
set_intr_gate
(
0
,
&
divide_error
);
set_intr_gate_ist
(
1
,
&
debug
,
DEBUG_STACK
);
set_intr_gate_ist
(
2
,
&
nmi
,
NMI_STACK
);
set_
intr
_gate
(
3
,
&
int3
);
set_
system
_gate
(
3
,
&
int3
);
set_system_gate
(
4
,
&
overflow
);
/* int4-5 can be called from all */
set_system_gate
(
5
,
&
bounds
);
set_intr_gate
(
6
,
&
invalid_op
);
...
...
arch/x86_64/mm/ioremap.c
View file @
7a303cfd
...
...
@@ -265,8 +265,9 @@ void iounmap(volatile void __iomem *addr)
unmap_vm_area
(
p
);
if
((
p
->
flags
>>
20
)
&&
p
->
phys_addr
+
p
->
size
-
1
<
virt_to_phys
(
high_memory
))
{
/* p->size includes the guard page, but cpa doesn't like that */
change_page_attr
(
virt_to_page
(
__va
(
p
->
phys_addr
)),
p
->
size
>>
PAGE_SHIFT
,
(
p
->
size
-
PAGE_SIZE
)
>>
PAGE_SHIFT
,
PAGE_KERNEL
);
global_flush_tlb
();
}
...
...
drivers/net/tg3.c
View file @
7a303cfd
...
...
@@ -60,8 +60,8 @@
#define DRV_MODULE_NAME "tg3"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "3.1
7
"
#define DRV_MODULE_RELDATE "January 2
2
, 2005"
#define DRV_MODULE_VERSION "3.1
8
"
#define DRV_MODULE_RELDATE "January 2
4
, 2005"
#define TG3_DEF_MAC_MODE 0
#define TG3_DEF_RX_MODE 0
...
...
@@ -3111,11 +3111,19 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
skb
->
nh
.
iph
->
check
=
0
;
skb
->
nh
.
iph
->
tot_len
=
ntohs
(
mss
+
ip_tcp_len
+
tcp_opt_len
);
skb
->
h
.
th
->
check
=
~
csum_tcpudp_magic
(
skb
->
nh
.
iph
->
saddr
,
skb
->
nh
.
iph
->
daddr
,
0
,
IPPROTO_TCP
,
0
);
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
{
skb
->
h
.
th
->
check
=
0
;
base_flags
&=
~
TXD_FLAG_TCPUDP_CSUM
;
}
else
{
skb
->
h
.
th
->
check
=
~
csum_tcpudp_magic
(
skb
->
nh
.
iph
->
saddr
,
skb
->
nh
.
iph
->
daddr
,
0
,
IPPROTO_TCP
,
0
);
}
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5705
)
{
if
((
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
||
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5705
))
{
if
(
tcp_opt_len
||
skb
->
nh
.
iph
->
ihl
>
5
)
{
int
tsflags
;
...
...
@@ -3182,7 +3190,7 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
would_hit_hwbug
=
entry
+
1
;
}
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5750
)
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
tg3_set_txd
(
tp
,
entry
,
mapping
,
len
,
base_flags
,
(
i
==
last
)
|
(
mss
<<
1
));
else
...
...
@@ -4774,7 +4782,7 @@ static int tg3_load_tso_firmware(struct tg3 *tp)
unsigned
long
cpu_base
,
cpu_scratch_base
,
cpu_scratch_size
;
int
err
,
i
;
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5750
)
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
return
0
;
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5705
)
{
...
...
@@ -5208,7 +5216,7 @@ static int tg3_reset_hw(struct tg3 *tp)
}
#if TG3_TSO_SUPPORT != 0
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5750
)
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
rdmac_mode
|=
(
1
<<
27
);
#endif
...
...
@@ -5358,7 +5366,7 @@ static int tg3_reset_hw(struct tg3 *tp)
tw32
(
RCVDBDI_MODE
,
RCVDBDI_MODE_ENABLE
|
RCVDBDI_MODE_INV_RING_SZ
);
tw32
(
SNDDATAI_MODE
,
SNDDATAI_MODE_ENABLE
);
#if TG3_TSO_SUPPORT != 0
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5750
)
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
tw32
(
SNDDATAI_MODE
,
SNDDATAI_MODE_ENABLE
|
0x8
);
#endif
tw32
(
SNDBDI_MODE
,
SNDBDI_MODE_ENABLE
|
SNDBDI_MODE_ATTN_ENABLE
);
...
...
@@ -7867,6 +7875,9 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
tp
->
pci_hdr_type
=
(
cacheline_sz_reg
>>
16
)
&
0xff
;
tp
->
pci_bist
=
(
cacheline_sz_reg
>>
24
)
&
0xff
;
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5750
)
tp
->
tg3_flags2
|=
TG3_FLG2_HW_TSO
;
if
(
pci_find_capability
(
tp
->
pdev
,
PCI_CAP_ID_EXP
)
!=
0
)
tp
->
tg3_flags2
|=
TG3_FLG2_PCI_EXPRESS
;
...
...
@@ -8762,11 +8773,13 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
}
#if TG3_TSO_SUPPORT != 0
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5700
||
if
(
tp
->
tg3_flags2
&
TG3_FLG2_HW_TSO
)
{
tp
->
tg3_flags2
|=
TG3_FLG2_TSO_CAPABLE
;
}
else
if
(
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5700
||
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
==
ASIC_REV_5701
||
tp
->
pci_chip_rev_id
==
CHIPREV_ID_5705_A0
||
((
tp
->
tg3_flags
&
TG3_FLAG_ENABLE_ASF
)
!=
0
&&
GET_ASIC_REV
(
tp
->
pci_chip_rev_id
)
!=
ASIC_REV_5750
))
{
(
tp
->
tg3_flags
&
TG3_FLAG_ENABLE_ASF
)
!=
0
)
{
tp
->
tg3_flags2
&=
~
TG3_FLG2_TSO_CAPABLE
;
}
else
{
tp
->
tg3_flags2
|=
TG3_FLG2_TSO_CAPABLE
;
...
...
drivers/net/tg3.h
View file @
7a303cfd
...
...
@@ -2105,6 +2105,7 @@ struct tg3 {
#define TG3_FLG2_PHY_SERDES 0x00002000
#define TG3_FLG2_CAPACITIVE_COUPLING 0x00004000
#define TG3_FLG2_FLASH 0x00008000
#define TG3_FLG2_HW_TSO 0x00010000
u32
split_mode_max_reqs
;
#define SPLIT_MODE_5704_MAX_REQ 3
...
...
drivers/net/tun.c
View file @
7a303cfd
...
...
@@ -113,6 +113,7 @@ static int tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
/* Queue packet */
skb_queue_tail
(
&
tun
->
readq
,
skb
);
dev
->
trans_start
=
jiffies
;
/* Notify and wake up reader process */
if
(
tun
->
flags
&
TUN_FASYNC
)
...
...
@@ -259,6 +260,7 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun, struct iovec *iv,
skb
->
ip_summed
=
CHECKSUM_UNNECESSARY
;
netif_rx_ni
(
skb
);
tun
->
dev
->
last_rx
=
jiffies
;
tun
->
stats
.
rx_packets
++
;
tun
->
stats
.
rx_bytes
+=
len
;
...
...
include/asm-x86_64/numnodes.h
View file @
7a303cfd
...
...
@@ -3,6 +3,10 @@
#include <linux/config.h>
#ifdef CONFIG_NUMA
#define NODES_SHIFT 6
#else
#define NODES_SHIFT 0
#endif
#endif
include/linux/netfilter_ipv4/ip_conntrack.h
View file @
7a303cfd
...
...
@@ -122,33 +122,6 @@ do { \
#define IP_NF_ASSERT(x)
#endif
struct
ip_conntrack_expect
{
/* Internal linked list (global expectation list) */
struct
list_head
list
;
/* We expect this tuple, with the following mask */
struct
ip_conntrack_tuple
tuple
,
mask
;
/* Function to call after setup and insertion */
void
(
*
expectfn
)(
struct
ip_conntrack
*
new
,
struct
ip_conntrack_expect
*
this
);
/* The conntrack of the master connection */
struct
ip_conntrack
*
master
;
/* Timer function; deletes the expectation. */
struct
timer_list
timeout
;
#ifdef CONFIG_IP_NF_NAT_NEEDED
/* This is the original per-proto part, used to map the
* expected connection the way the recipient expects. */
union
ip_conntrack_manip_proto
saved_proto
;
/* Direction relative to the master connection. */
enum
ip_conntrack_dir
dir
;
#endif
};
struct
ip_conntrack_counter
{
u_int64_t
packets
;
...
...
@@ -206,6 +179,33 @@ struct ip_conntrack
struct
ip_conntrack_tuple_hash
tuplehash
[
IP_CT_DIR_MAX
];
};
struct
ip_conntrack_expect
{
/* Internal linked list (global expectation list) */
struct
list_head
list
;
/* We expect this tuple, with the following mask */
struct
ip_conntrack_tuple
tuple
,
mask
;
/* Function to call after setup and insertion */
void
(
*
expectfn
)(
struct
ip_conntrack
*
new
,
struct
ip_conntrack_expect
*
this
);
/* The conntrack of the master connection */
struct
ip_conntrack
*
master
;
/* Timer function; deletes the expectation. */
struct
timer_list
timeout
;
#ifdef CONFIG_IP_NF_NAT_NEEDED
/* This is the original per-proto part, used to map the
* expected connection the way the recipient expects. */
union
ip_conntrack_manip_proto
saved_proto
;
/* Direction relative to the master connection. */
enum
ip_conntrack_dir
dir
;
#endif
};
static
inline
struct
ip_conntrack
*
tuplehash_to_ctrack
(
const
struct
ip_conntrack_tuple_hash
*
hash
)
{
...
...
@@ -301,6 +301,7 @@ struct ip_conntrack_stat
#define CONNTRACK_STAT_INC(count) (__get_cpu_var(ip_conntrack_stat).count++)
#ifdef CONFIG_IP_NF_NAT_NEEDED
static
inline
int
ip_nat_initialized
(
struct
ip_conntrack
*
conntrack
,
enum
ip_nat_manip_type
manip
)
{
...
...
@@ -308,5 +309,7 @@ static inline int ip_nat_initialized(struct ip_conntrack *conntrack,
return
test_bit
(
IPS_SRC_NAT_DONE_BIT
,
&
conntrack
->
status
);
return
test_bit
(
IPS_DST_NAT_DONE_BIT
,
&
conntrack
->
status
);
}
#endif
/* CONFIG_IP_NF_NAT_NEEDED */
#endif
/* __KERNEL__ */
#endif
/* _IP_CONNTRACK_H */
include/linux/netfilter_ipv4/ip_conntrack_tftp.h
View file @
7a303cfd
...
...
@@ -13,7 +13,7 @@ struct tftphdr {
#define TFTP_OPCODE_ACK 4
#define TFTP_OPCODE_ERROR 5
unsigned
int
(
*
ip_nat_tftp_hook
)(
struct
sk_buff
**
pskb
,
extern
unsigned
int
(
*
ip_nat_tftp_hook
)(
struct
sk_buff
**
pskb
,
enum
ip_conntrack_info
ctinfo
,
struct
ip_conntrack_expect
*
exp
);
...
...
include/linux/netfilter_ipv4/ipt_conntrack.h
View file @
7a303cfd
...
...
@@ -22,11 +22,32 @@
#define IPT_CONNTRACK_STATUS 0x40
#define IPT_CONNTRACK_EXPIRES 0x80
/* This is exposed to userspace, so remains frozen in time. */
struct
ip_conntrack_old_tuple
{
struct
{
__u32
ip
;
union
{
__u16
all
;
}
u
;
}
src
;
struct
{
__u32
ip
;
union
{
__u16
all
;
}
u
;
/* The protocol. */
u16
protonum
;
}
dst
;
};
struct
ipt_conntrack_info
{
unsigned
int
statemask
,
statusmask
;
struct
ip_conntrack_tuple
tuple
[
IP_CT_DIR_MAX
];
struct
ip_conntrack_
old_
tuple
tuple
[
IP_CT_DIR_MAX
];
struct
in_addr
sipmsk
[
IP_CT_DIR_MAX
],
dipmsk
[
IP_CT_DIR_MAX
];
unsigned
long
expires_min
,
expires_max
;
...
...
include/linux/netfilter_ipv4/ipt_multiport.h
View file @
7a303cfd
...
...
@@ -25,5 +25,6 @@ struct ipt_multiport_v1
u_int8_t
count
;
/* Number of ports */
u_int16_t
ports
[
IPT_MULTI_PORTS
];
/* Ports */
u_int8_t
pflags
[
IPT_MULTI_PORTS
];
/* Port flags */
u_int8_t
invert
;
/* Invert flag */
};
#endif
/*_IPT_MULTIPORT_H*/
kernel/kallsyms.c
View file @
7a303cfd
...
...
@@ -53,6 +53,13 @@ static inline int is_kernel_text(unsigned long addr)
return
in_gate_area_no_task
(
addr
);
}
static
inline
int
is_kernel
(
unsigned
long
addr
)
{
if
(
addr
>=
(
unsigned
long
)
_stext
&&
addr
<=
(
unsigned
long
)
_end
)
return
1
;
return
in_gate_area_no_task
(
addr
);
}
/* expand a compressed symbol data into the resulting uncompressed string,
given the offset to where the symbol is in the compressed stream */
static
unsigned
int
kallsyms_expand_symbol
(
unsigned
int
off
,
char
*
result
)
...
...
@@ -153,7 +160,8 @@ const char *kallsyms_lookup(unsigned long addr,
namebuf
[
KSYM_NAME_LEN
]
=
0
;
namebuf
[
0
]
=
0
;
if
(
all_var
||
is_kernel_text
(
addr
)
||
is_kernel_inittext
(
addr
))
{
if
((
all_var
&&
is_kernel
(
addr
))
||
(
!
all_var
&&
(
is_kernel_text
(
addr
)
||
is_kernel_inittext
(
addr
))))
{
unsigned
long
symbol_end
=
0
;
/* do a binary search on the sorted kallsyms_addresses array */
...
...
net/8021q/vlanproc.h
View file @
7a303cfd
...
...
@@ -11,8 +11,8 @@ void vlan_proc_cleanup (void);
#define vlan_proc_init() (0)
#define vlan_proc_cleanup() do {} while(0)
#define vlan_proc_add_dev(dev) (
(void)(dev), 0
)
#define vlan_proc_rem_dev(dev) (
(void)(dev), 0
)
#define vlan_proc_add_dev(dev) (
{(void)(dev), 0;}
)
#define vlan_proc_rem_dev(dev) (
{(void)(dev), 0;}
)
#endif
...
...
net/core/netpoll.c
View file @
7a303cfd
...
...
@@ -65,27 +65,25 @@ static int checksum_udp(struct sk_buff *skb, struct udphdr *uh,
return
csum_fold
(
skb_checksum
(
skb
,
0
,
skb
->
len
,
skb
->
csum
));
}
void
netpoll_poll
(
struct
netpoll
*
np
)
/*
* Check whether delayed processing was scheduled for our current CPU,
* and then manually invoke NAPI polling to pump data off the card.
*
* In cases where there is bi-directional communications, reading only
* one message at a time can lead to packets being dropped by the
* network adapter, forcing superfluous retries and possibly timeouts.
* Thus, we set our budget to greater than 1.
*/
static
void
poll_napi
(
struct
netpoll
*
np
)
{
/*
* In cases where there is bi-directional communications, reading
* only one message at a time can lead to packets being dropped by
* the network adapter, forcing superfluous retries and possibly
* timeouts. Thus, we set our budget to a more reasonable value.
*/
int
budget
=
16
;
unsigned
long
flags
;
struct
softnet_data
*
queue
;
if
(
!
np
->
dev
||
!
netif_running
(
np
->
dev
)
||
!
np
->
dev
->
poll_controller
)
return
;
/* Process pending work on NIC */
np
->
dev
->
poll_controller
(
np
->
dev
);
/* If scheduling is stopped, tickle NAPI bits */
spin_lock_irqsave
(
&
netpoll_poll_lock
,
flags
);
if
(
np
->
dev
->
poll
&&
test_bit
(
__LINK_STATE_RX_SCHED
,
&
np
->
dev
->
state
))
{
queue
=
&
__get_cpu_var
(
softnet_data
);
if
(
test_bit
(
__LINK_STATE_RX_SCHED
,
&
np
->
dev
->
state
)
&&
!
list_empty
(
&
queue
->
poll_list
))
{
np
->
dev
->
netpoll_rx
|=
NETPOLL_RX_DROP
;
atomic_inc
(
&
trapped
);
...
...
@@ -95,6 +93,17 @@ void netpoll_poll(struct netpoll *np)
np
->
dev
->
netpoll_rx
&=
~
NETPOLL_RX_DROP
;
}
spin_unlock_irqrestore
(
&
netpoll_poll_lock
,
flags
);
}
void
netpoll_poll
(
struct
netpoll
*
np
)
{
if
(
!
np
->
dev
||
!
netif_running
(
np
->
dev
)
||
!
np
->
dev
->
poll_controller
)
return
;
/* Process pending work on NIC */
np
->
dev
->
poll_controller
(
np
->
dev
);
if
(
np
->
dev
->
poll
)
poll_napi
(
np
);
zap_completion_queue
();
}
...
...
net/ipv4/ip_output.c
View file @
7a303cfd
...
...
@@ -504,6 +504,7 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
/* Prepare header of the next frame,
* before previous one went down. */
if
(
frag
)
{
frag
->
ip_summed
=
CHECKSUM_NONE
;
frag
->
h
.
raw
=
frag
->
data
;
frag
->
nh
.
raw
=
__skb_push
(
frag
,
hlen
);
memcpy
(
frag
->
nh
.
raw
,
iph
,
hlen
);
...
...
net/ipv4/netfilter/ip_conntrack_irc.c
View file @
7a303cfd
...
...
@@ -209,9 +209,14 @@ static int help(struct sk_buff **pskb,
DEBUGP
(
"tcph->seq = %u
\n
"
,
th
->
seq
);
seq
=
ntohl
(
th
->
seq
)
+
(
addr_beg_p
-
ib_ptr
);
/* We refer to the reverse direction ("!dir")
* tuples here, because we're expecting
* something in the other * direction.
* Doesn't matter unless NAT is happening. */
exp
->
tuple
=
((
struct
ip_conntrack_tuple
)
{
{
0
,
{
0
}
},
{
ct
->
tuplehash
[
dir
].
tuple
.
src
.
ip
,
{
.
tcp
=
{
htons
(
dcc_port
)
}
},
{
ct
->
tuplehash
[
!
dir
].
tuple
.
dst
.
ip
,
{
.
tcp
=
{
htons
(
dcc_port
)
}
},
IPPROTO_TCP
}});
exp
->
mask
=
((
struct
ip_conntrack_tuple
)
{
{
0
,
{
0
}
},
...
...
net/ipv4/netfilter/ip_nat_irc.c
View file @
7a303cfd
...
...
@@ -83,7 +83,10 @@ static unsigned int help(struct sk_buff **pskb,
* 0x01, \n: terminators
*/
sprintf
(
buffer
,
"%u %u"
,
ntohl
(
exp
->
tuple
.
src
.
ip
),
port
);
/* AAA = "us", ie. where server normally talks to. */
sprintf
(
buffer
,
"%u %u"
,
ntohl
(
exp
->
master
->
tuplehash
[
IP_CT_DIR_REPLY
].
tuple
.
dst
.
ip
),
port
);
DEBUGP
(
"ip_nat_irc: Inserting '%s' == %u.%u.%u.%u, port %u
\n
"
,
buffer
,
NIPQUAD
(
exp
->
tuple
.
src
.
ip
),
port
);
...
...
net/ipv4/netfilter/ip_nat_rule.c
View file @
7a303cfd
...
...
@@ -181,7 +181,7 @@ static int ipt_snat_checkentry(const char *tablename,
return
0
;
}
if
(
targinfosize
!=
sizeof
(
struct
ip_nat_multi_range_compat
))
{
if
(
targinfosize
!=
IPT_ALIGN
(
sizeof
(
struct
ip_nat_multi_range_compat
)
))
{
DEBUGP
(
"SNAT: Target size %u wrong for %u ranges
\n
"
,
targinfosize
,
mr
->
rangesize
);
return
0
;
...
...
@@ -214,7 +214,7 @@ static int ipt_dnat_checkentry(const char *tablename,
return
0
;
}
if
(
targinfosize
!=
sizeof
(
struct
ip_nat_multi_range_compat
))
{
if
(
targinfosize
!=
IPT_ALIGN
(
sizeof
(
struct
ip_nat_multi_range_compat
)
))
{
DEBUGP
(
"DNAT: Target size %u wrong for %u ranges
\n
"
,
targinfosize
,
mr
->
rangesize
);
return
0
;
...
...
net/ipv4/netfilter/ipt_CLUSTERIP.c
View file @
7a303cfd
...
...
@@ -29,6 +29,7 @@
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter_ipv4/ipt_CLUSTERIP.h>
#include <linux/netfilter_ipv4/ip_conntrack.h>
#include <linux/netfilter_ipv4/lockhelp.h>
#define CLUSTERIP_VERSION "0.6"
...
...
net/ipv4/netfilter/ipt_multiport.c
View file @
7a303cfd
...
...
@@ -64,30 +64,31 @@ ports_match_v1(const struct ipt_multiport_v1 *minfo,
if
(
minfo
->
flags
==
IPT_MULTIPORT_SOURCE
&&
src
>=
s
&&
src
<=
e
)
return
1
;
return
1
^
minfo
->
invert
;
if
(
minfo
->
flags
==
IPT_MULTIPORT_DESTINATION
&&
dst
>=
s
&&
dst
<=
e
)
return
1
;
return
1
^
minfo
->
invert
;
if
(
minfo
->
flags
==
IPT_MULTIPORT_EITHER
&&
((
dst
>=
s
&&
dst
<=
e
)
||
(
src
>=
s
&&
src
<=
e
)))
return
1
;
return
1
^
minfo
->
invert
;
}
else
{
/* exact port matching */
duprintf
(
"src or dst matches with %d?
\n
"
,
s
);
if
(
minfo
->
flags
==
IPT_MULTIPORT_SOURCE
&&
src
==
s
)
return
1
;
return
1
^
minfo
->
invert
;
if
(
minfo
->
flags
==
IPT_MULTIPORT_DESTINATION
&&
dst
==
s
)
return
1
;
return
1
^
minfo
->
invert
;
if
(
minfo
->
flags
==
IPT_MULTIPORT_EITHER
&&
(
src
==
s
||
dst
==
s
))
return
1
;
return
1
^
minfo
->
invert
;
}
}
return
0
;
return
minfo
->
invert
;
}
static
int
...
...
net/ipv6/ip6_output.c
View file @
7a303cfd
...
...
@@ -592,6 +592,7 @@ static int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
/* Prepare header of the next frame,
* before previous one went down. */
if
(
frag
)
{
frag
->
ip_summed
=
CHECKSUM_NONE
;
frag
->
h
.
raw
=
frag
->
data
;
fh
=
(
struct
frag_hdr
*
)
__skb_push
(
frag
,
sizeof
(
struct
frag_hdr
));
frag
->
nh
.
raw
=
__skb_push
(
frag
,
hlen
);
...
...
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