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
d8ac1063
Commit
d8ac1063
authored
Sep 13, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
b24fd48a
033d9744
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
130 additions
and
36 deletions
+130
-36
drivers/bluetooth/hci_usb.c
drivers/bluetooth/hci_usb.c
+18
-1
drivers/bluetooth/hci_usb.h
drivers/bluetooth/hci_usb.h
+3
-2
include/net/bluetooth/hci.h
include/net/bluetooth/hci.h
+11
-0
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+33
-0
net/bluetooth/rfcomm/sock.c
net/bluetooth/rfcomm/sock.c
+25
-5
net/dccp/input.c
net/dccp/input.c
+8
-1
net/ipv4/netfilter/ip_conntrack_ftp.c
net/ipv4/netfilter/ip_conntrack_ftp.c
+3
-3
net/ipv4/netfilter/ip_conntrack_irc.c
net/ipv4/netfilter/ip_conntrack_irc.c
+3
-3
net/ipv4/netfilter/ip_conntrack_netbios_ns.c
net/ipv4/netfilter/ip_conntrack_netbios_ns.c
+7
-12
net/ipv4/netfilter/ip_conntrack_tftp.c
net/ipv4/netfilter/ip_conntrack_tftp.c
+3
-3
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv4/netfilter/ipt_MASQUERADE.c
+6
-0
net/ipv4/netfilter/ipt_REDIRECT.c
net/ipv4/netfilter/ipt_REDIRECT.c
+10
-6
No files found.
drivers/bluetooth/hci_usb.c
View file @
d8ac1063
...
@@ -65,13 +65,15 @@
...
@@ -65,13 +65,15 @@
#endif
#endif
static
int
ignore
=
0
;
static
int
ignore
=
0
;
static
int
ignore_csr
=
0
;
static
int
ignore_sniffer
=
0
;
static
int
reset
=
0
;
static
int
reset
=
0
;
#ifdef CONFIG_BT_HCIUSB_SCO
#ifdef CONFIG_BT_HCIUSB_SCO
static
int
isoc
=
2
;
static
int
isoc
=
2
;
#endif
#endif
#define VERSION "2.
8
"
#define VERSION "2.
9
"
static
struct
usb_driver
hci_usb_driver
;
static
struct
usb_driver
hci_usb_driver
;
...
@@ -98,6 +100,9 @@ static struct usb_device_id bluetooth_ids[] = {
...
@@ -98,6 +100,9 @@ static struct usb_device_id bluetooth_ids[] = {
MODULE_DEVICE_TABLE
(
usb
,
bluetooth_ids
);
MODULE_DEVICE_TABLE
(
usb
,
bluetooth_ids
);
static
struct
usb_device_id
blacklist_ids
[]
=
{
static
struct
usb_device_id
blacklist_ids
[]
=
{
/* CSR BlueCore devices */
{
USB_DEVICE
(
0x0a12
,
0x0001
),
.
driver_info
=
HCI_CSR
},
/* Broadcom BCM2033 without firmware */
/* Broadcom BCM2033 without firmware */
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
HCI_IGNORE
},
{
USB_DEVICE
(
0x0a5c
,
0x2033
),
.
driver_info
=
HCI_IGNORE
},
...
@@ -836,6 +841,12 @@ static int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id
...
@@ -836,6 +841,12 @@ static int hci_usb_probe(struct usb_interface *intf, const struct usb_device_id
if
(
ignore
||
id
->
driver_info
&
HCI_IGNORE
)
if
(
ignore
||
id
->
driver_info
&
HCI_IGNORE
)
return
-
ENODEV
;
return
-
ENODEV
;
if
(
ignore_csr
&&
id
->
driver_info
&
HCI_CSR
)
return
-
ENODEV
;
if
(
ignore_sniffer
&&
id
->
driver_info
&
HCI_SNIFFER
)
return
-
ENODEV
;
if
(
intf
->
cur_altsetting
->
desc
.
bInterfaceNumber
>
0
)
if
(
intf
->
cur_altsetting
->
desc
.
bInterfaceNumber
>
0
)
return
-
ENODEV
;
return
-
ENODEV
;
...
@@ -1061,6 +1072,12 @@ module_exit(hci_usb_exit);
...
@@ -1061,6 +1072,12 @@ module_exit(hci_usb_exit);
module_param
(
ignore
,
bool
,
0644
);
module_param
(
ignore
,
bool
,
0644
);
MODULE_PARM_DESC
(
ignore
,
"Ignore devices from the matching table"
);
MODULE_PARM_DESC
(
ignore
,
"Ignore devices from the matching table"
);
module_param
(
ignore_csr
,
bool
,
0644
);
MODULE_PARM_DESC
(
ignore_csr
,
"Ignore devices with id 0a12:0001"
);
module_param
(
ignore_sniffer
,
bool
,
0644
);
MODULE_PARM_DESC
(
ignore_sniffer
,
"Ignore devices with id 0a12:0002"
);
module_param
(
reset
,
bool
,
0644
);
module_param
(
reset
,
bool
,
0644
);
MODULE_PARM_DESC
(
reset
,
"Send HCI reset command on initialization"
);
MODULE_PARM_DESC
(
reset
,
"Send HCI reset command on initialization"
);
...
...
drivers/bluetooth/hci_usb.h
View file @
d8ac1063
...
@@ -31,9 +31,10 @@
...
@@ -31,9 +31,10 @@
#define HCI_IGNORE 0x01
#define HCI_IGNORE 0x01
#define HCI_RESET 0x02
#define HCI_RESET 0x02
#define HCI_DIGIANSWER 0x04
#define HCI_DIGIANSWER 0x04
#define HCI_
SNIFFER
0x08
#define HCI_
CSR
0x08
#define HCI_
BROKEN_ISOC
0x10
#define HCI_
SNIFFER
0x10
#define HCI_BCM92035 0x20
#define HCI_BCM92035 0x20
#define HCI_BROKEN_ISOC 0x40
#define HCI_MAX_IFACE_NUM 3
#define HCI_MAX_IFACE_NUM 3
...
...
include/net/bluetooth/hci.h
View file @
d8ac1063
...
@@ -463,6 +463,17 @@ struct inquiry_info_with_rssi_and_pscan_mode {
...
@@ -463,6 +463,17 @@ struct inquiry_info_with_rssi_and_pscan_mode {
__s8
rssi
;
__s8
rssi
;
}
__attribute__
((
packed
));
}
__attribute__
((
packed
));
#define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2F
struct
extended_inquiry_info
{
bdaddr_t
bdaddr
;
__u8
pscan_rep_mode
;
__u8
pscan_period_mode
;
__u8
dev_class
[
3
];
__u16
clock_offset
;
__s8
rssi
;
__u8
data
[
240
];
}
__attribute__
((
packed
));
#define HCI_EV_CONN_COMPLETE 0x03
#define HCI_EV_CONN_COMPLETE 0x03
struct
hci_ev_conn_complete
{
struct
hci_ev_conn_complete
{
__u8
status
;
__u8
status
;
...
...
net/bluetooth/hci_event.c
View file @
d8ac1063
...
@@ -558,6 +558,35 @@ static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct
...
@@ -558,6 +558,35 @@ static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct
hci_dev_unlock
(
hdev
);
hci_dev_unlock
(
hdev
);
}
}
/* Extended Inquiry Result */
static
inline
void
hci_extended_inquiry_result_evt
(
struct
hci_dev
*
hdev
,
struct
sk_buff
*
skb
)
{
struct
inquiry_data
data
;
struct
extended_inquiry_info
*
info
=
(
struct
extended_inquiry_info
*
)
(
skb
->
data
+
1
);
int
num_rsp
=
*
((
__u8
*
)
skb
->
data
);
BT_DBG
(
"%s num_rsp %d"
,
hdev
->
name
,
num_rsp
);
if
(
!
num_rsp
)
return
;
hci_dev_lock
(
hdev
);
for
(;
num_rsp
;
num_rsp
--
)
{
bacpy
(
&
data
.
bdaddr
,
&
info
->
bdaddr
);
data
.
pscan_rep_mode
=
info
->
pscan_rep_mode
;
data
.
pscan_period_mode
=
info
->
pscan_period_mode
;
data
.
pscan_mode
=
0x00
;
memcpy
(
data
.
dev_class
,
info
->
dev_class
,
3
);
data
.
clock_offset
=
info
->
clock_offset
;
data
.
rssi
=
info
->
rssi
;
info
++
;
hci_inquiry_cache_update
(
hdev
,
&
data
);
}
hci_dev_unlock
(
hdev
);
}
/* Connect Request */
/* Connect Request */
static
inline
void
hci_conn_request_evt
(
struct
hci_dev
*
hdev
,
struct
sk_buff
*
skb
)
static
inline
void
hci_conn_request_evt
(
struct
hci_dev
*
hdev
,
struct
sk_buff
*
skb
)
{
{
...
@@ -940,6 +969,10 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
...
@@ -940,6 +969,10 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
hci_inquiry_result_with_rssi_evt
(
hdev
,
skb
);
hci_inquiry_result_with_rssi_evt
(
hdev
,
skb
);
break
;
break
;
case
HCI_EV_EXTENDED_INQUIRY_RESULT
:
hci_extended_inquiry_result_evt
(
hdev
,
skb
);
break
;
case
HCI_EV_CONN_REQUEST
:
case
HCI_EV_CONN_REQUEST
:
hci_conn_request_evt
(
hdev
,
skb
);
hci_conn_request_evt
(
hdev
,
skb
);
break
;
break
;
...
...
net/bluetooth/rfcomm/sock.c
View file @
d8ac1063
...
@@ -363,6 +363,11 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr
...
@@ -363,6 +363,11 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr
goto
done
;
goto
done
;
}
}
if
(
sk
->
sk_type
!=
SOCK_STREAM
)
{
err
=
-
EINVAL
;
goto
done
;
}
write_lock_bh
(
&
rfcomm_sk_list
.
lock
);
write_lock_bh
(
&
rfcomm_sk_list
.
lock
);
if
(
sa
->
rc_channel
&&
__rfcomm_get_sock_by_addr
(
sa
->
rc_channel
,
&
sa
->
rc_bdaddr
))
{
if
(
sa
->
rc_channel
&&
__rfcomm_get_sock_by_addr
(
sa
->
rc_channel
,
&
sa
->
rc_bdaddr
))
{
...
@@ -393,13 +398,17 @@ static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int a
...
@@ -393,13 +398,17 @@ static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int a
if
(
addr
->
sa_family
!=
AF_BLUETOOTH
||
alen
<
sizeof
(
struct
sockaddr_rc
))
if
(
addr
->
sa_family
!=
AF_BLUETOOTH
||
alen
<
sizeof
(
struct
sockaddr_rc
))
return
-
EINVAL
;
return
-
EINVAL
;
if
(
sk
->
sk_state
!=
BT_OPEN
&&
sk
->
sk_state
!=
BT_BOUND
)
lock_sock
(
sk
);
return
-
EBADFD
;
if
(
sk
->
sk_type
!=
SOCK_STREAM
)
if
(
sk
->
sk_state
!=
BT_OPEN
&&
sk
->
sk_state
!=
BT_BOUND
)
{
return
-
EINVAL
;
err
=
-
EBADFD
;
goto
done
;
}
lock_sock
(
sk
);
if
(
sk
->
sk_type
!=
SOCK_STREAM
)
{
err
=
-
EINVAL
;
goto
done
;
}
sk
->
sk_state
=
BT_CONNECT
;
sk
->
sk_state
=
BT_CONNECT
;
bacpy
(
&
bt_sk
(
sk
)
->
dst
,
&
sa
->
rc_bdaddr
);
bacpy
(
&
bt_sk
(
sk
)
->
dst
,
&
sa
->
rc_bdaddr
);
...
@@ -410,6 +419,7 @@ static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int a
...
@@ -410,6 +419,7 @@ static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int a
err
=
bt_sock_wait_state
(
sk
,
BT_CONNECTED
,
err
=
bt_sock_wait_state
(
sk
,
BT_CONNECTED
,
sock_sndtimeo
(
sk
,
flags
&
O_NONBLOCK
));
sock_sndtimeo
(
sk
,
flags
&
O_NONBLOCK
));
done:
release_sock
(
sk
);
release_sock
(
sk
);
return
err
;
return
err
;
}
}
...
@@ -428,6 +438,11 @@ static int rfcomm_sock_listen(struct socket *sock, int backlog)
...
@@ -428,6 +438,11 @@ static int rfcomm_sock_listen(struct socket *sock, int backlog)
goto
done
;
goto
done
;
}
}
if
(
sk
->
sk_type
!=
SOCK_STREAM
)
{
err
=
-
EINVAL
;
goto
done
;
}
if
(
!
rfcomm_pi
(
sk
)
->
channel
)
{
if
(
!
rfcomm_pi
(
sk
)
->
channel
)
{
bdaddr_t
*
src
=
&
bt_sk
(
sk
)
->
src
;
bdaddr_t
*
src
=
&
bt_sk
(
sk
)
->
src
;
u8
channel
;
u8
channel
;
...
@@ -472,6 +487,11 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
...
@@ -472,6 +487,11 @@ static int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int f
goto
done
;
goto
done
;
}
}
if
(
sk
->
sk_type
!=
SOCK_STREAM
)
{
err
=
-
EINVAL
;
goto
done
;
}
timeo
=
sock_rcvtimeo
(
sk
,
flags
&
O_NONBLOCK
);
timeo
=
sock_rcvtimeo
(
sk
,
flags
&
O_NONBLOCK
);
BT_DBG
(
"sk %p timeo %ld"
,
sk
,
timeo
);
BT_DBG
(
"sk %p timeo %ld"
,
sk
,
timeo
);
...
...
net/dccp/input.c
View file @
d8ac1063
...
@@ -50,6 +50,7 @@ static void dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb)
...
@@ -50,6 +50,7 @@ static void dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb)
return
;
return
;
}
}
if
(
sk
->
sk_state
!=
DCCP_CLOSING
)
dccp_set_state
(
sk
,
DCCP_CLOSING
);
dccp_set_state
(
sk
,
DCCP_CLOSING
);
dccp_send_close
(
sk
,
0
);
dccp_send_close
(
sk
,
0
);
}
}
...
@@ -561,6 +562,12 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
...
@@ -561,6 +562,12 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
return
0
;
return
0
;
}
}
if
(
unlikely
(
dh
->
dccph_type
==
DCCP_PKT_SYNC
))
{
dccp_send_sync
(
sk
,
DCCP_SKB_CB
(
skb
)
->
dccpd_seq
,
DCCP_PKT_SYNCACK
);
goto
discard
;
}
switch
(
sk
->
sk_state
)
{
switch
(
sk
->
sk_state
)
{
case
DCCP_CLOSED
:
case
DCCP_CLOSED
:
return
1
;
return
1
;
...
...
net/ipv4/netfilter/ip_conntrack_ftp.c
View file @
d8ac1063
...
@@ -29,9 +29,9 @@ static char *ftp_buffer;
...
@@ -29,9 +29,9 @@ static char *ftp_buffer;
static
DEFINE_SPINLOCK
(
ip_ftp_lock
);
static
DEFINE_SPINLOCK
(
ip_ftp_lock
);
#define MAX_PORTS 8
#define MAX_PORTS 8
static
in
t
ports
[
MAX_PORTS
];
static
shor
t
ports
[
MAX_PORTS
];
static
int
ports_c
;
static
int
ports_c
;
module_param_array
(
ports
,
in
t
,
&
ports_c
,
0400
);
module_param_array
(
ports
,
shor
t
,
&
ports_c
,
0400
);
static
int
loose
;
static
int
loose
;
module_param
(
loose
,
int
,
0600
);
module_param
(
loose
,
int
,
0600
);
...
@@ -450,7 +450,7 @@ static int help(struct sk_buff **pskb,
...
@@ -450,7 +450,7 @@ static int help(struct sk_buff **pskb,
}
}
static
struct
ip_conntrack_helper
ftp
[
MAX_PORTS
];
static
struct
ip_conntrack_helper
ftp
[
MAX_PORTS
];
static
char
ftp_names
[
MAX_PORTS
][
10
];
static
char
ftp_names
[
MAX_PORTS
][
sizeof
(
"ftp-65535"
)
];
/* Not __exit: called from init() */
/* Not __exit: called from init() */
static
void
fini
(
void
)
static
void
fini
(
void
)
...
...
net/ipv4/netfilter/ip_conntrack_irc.c
View file @
d8ac1063
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
#include <linux/moduleparam.h>
#include <linux/moduleparam.h>
#define MAX_PORTS 8
#define MAX_PORTS 8
static
in
t
ports
[
MAX_PORTS
];
static
shor
t
ports
[
MAX_PORTS
];
static
int
ports_c
;
static
int
ports_c
;
static
int
max_dcc_channels
=
8
;
static
int
max_dcc_channels
=
8
;
static
unsigned
int
dcc_timeout
=
300
;
static
unsigned
int
dcc_timeout
=
300
;
...
@@ -52,7 +52,7 @@ EXPORT_SYMBOL_GPL(ip_nat_irc_hook);
...
@@ -52,7 +52,7 @@ EXPORT_SYMBOL_GPL(ip_nat_irc_hook);
MODULE_AUTHOR
(
"Harald Welte <laforge@netfilter.org>"
);
MODULE_AUTHOR
(
"Harald Welte <laforge@netfilter.org>"
);
MODULE_DESCRIPTION
(
"IRC (DCC) connection tracking helper"
);
MODULE_DESCRIPTION
(
"IRC (DCC) connection tracking helper"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
module_param_array
(
ports
,
in
t
,
&
ports_c
,
0400
);
module_param_array
(
ports
,
shor
t
,
&
ports_c
,
0400
);
MODULE_PARM_DESC
(
ports
,
"port numbers of IRC servers"
);
MODULE_PARM_DESC
(
ports
,
"port numbers of IRC servers"
);
module_param
(
max_dcc_channels
,
int
,
0400
);
module_param
(
max_dcc_channels
,
int
,
0400
);
MODULE_PARM_DESC
(
max_dcc_channels
,
"max number of expected DCC channels per IRC session"
);
MODULE_PARM_DESC
(
max_dcc_channels
,
"max number of expected DCC channels per IRC session"
);
...
@@ -240,7 +240,7 @@ static int help(struct sk_buff **pskb,
...
@@ -240,7 +240,7 @@ static int help(struct sk_buff **pskb,
}
}
static
struct
ip_conntrack_helper
irc_helpers
[
MAX_PORTS
];
static
struct
ip_conntrack_helper
irc_helpers
[
MAX_PORTS
];
static
char
irc_names
[
MAX_PORTS
][
10
];
static
char
irc_names
[
MAX_PORTS
][
sizeof
(
"irc-65535"
)
];
static
void
fini
(
void
);
static
void
fini
(
void
);
...
...
net/ipv4/netfilter/ip_conntrack_netbios_ns.c
View file @
d8ac1063
...
@@ -23,7 +23,6 @@
...
@@ -23,7 +23,6 @@
#include <linux/inetdevice.h>
#include <linux/inetdevice.h>
#include <linux/in.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/ip.h>
#include <linux/udp.h>
#include <net/route.h>
#include <net/route.h>
#include <linux/netfilter.h>
#include <linux/netfilter.h>
...
@@ -31,6 +30,8 @@
...
@@ -31,6 +30,8 @@
#include <linux/netfilter_ipv4/ip_conntrack.h>
#include <linux/netfilter_ipv4/ip_conntrack.h>
#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
#define NMBD_PORT 137
MODULE_AUTHOR
(
"Patrick McHardy <kaber@trash.net>"
);
MODULE_AUTHOR
(
"Patrick McHardy <kaber@trash.net>"
);
MODULE_DESCRIPTION
(
"NetBIOS name service broadcast connection tracking helper"
);
MODULE_DESCRIPTION
(
"NetBIOS name service broadcast connection tracking helper"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
...
@@ -44,7 +45,6 @@ static int help(struct sk_buff **pskb,
...
@@ -44,7 +45,6 @@ static int help(struct sk_buff **pskb,
{
{
struct
ip_conntrack_expect
*
exp
;
struct
ip_conntrack_expect
*
exp
;
struct
iphdr
*
iph
=
(
*
pskb
)
->
nh
.
iph
;
struct
iphdr
*
iph
=
(
*
pskb
)
->
nh
.
iph
;
struct
udphdr
_uh
,
*
uh
;
struct
rtable
*
rt
=
(
struct
rtable
*
)(
*
pskb
)
->
dst
;
struct
rtable
*
rt
=
(
struct
rtable
*
)(
*
pskb
)
->
dst
;
struct
in_device
*
in_dev
;
struct
in_device
*
in_dev
;
u_int32_t
mask
=
0
;
u_int32_t
mask
=
0
;
...
@@ -72,20 +72,15 @@ static int help(struct sk_buff **pskb,
...
@@ -72,20 +72,15 @@ static int help(struct sk_buff **pskb,
if
(
mask
==
0
)
if
(
mask
==
0
)
goto
out
;
goto
out
;
uh
=
skb_header_pointer
(
*
pskb
,
iph
->
ihl
*
4
,
sizeof
(
_uh
),
&
_uh
);
BUG_ON
(
uh
==
NULL
);
exp
=
ip_conntrack_expect_alloc
(
ct
);
exp
=
ip_conntrack_expect_alloc
(
ct
);
if
(
exp
==
NULL
)
if
(
exp
==
NULL
)
goto
out
;
goto
out
;
memset
(
&
exp
->
tuple
,
0
,
sizeof
(
exp
->
tuple
));
exp
->
tuple
.
src
.
ip
=
iph
->
daddr
&
mask
;
exp
->
tuple
.
dst
.
ip
=
iph
->
saddr
;
exp
->
tuple
.
dst
.
u
.
udp
.
port
=
uh
->
source
;
exp
->
tuple
.
dst
.
protonum
=
IPPROTO_UDP
;
memset
(
&
exp
->
mask
,
0
,
sizeof
(
exp
->
mask
));
exp
->
tuple
=
ct
->
tuplehash
[
IP_CT_DIR_REPLY
].
tuple
;
exp
->
tuple
.
src
.
u
.
udp
.
port
=
ntohs
(
NMBD_PORT
);
exp
->
mask
.
src
.
ip
=
mask
;
exp
->
mask
.
src
.
ip
=
mask
;
exp
->
mask
.
src
.
u
.
udp
.
port
=
0xFFFF
;
exp
->
mask
.
dst
.
ip
=
0xFFFFFFFF
;
exp
->
mask
.
dst
.
ip
=
0xFFFFFFFF
;
exp
->
mask
.
dst
.
u
.
udp
.
port
=
0xFFFF
;
exp
->
mask
.
dst
.
u
.
udp
.
port
=
0xFFFF
;
exp
->
mask
.
dst
.
protonum
=
0xFF
;
exp
->
mask
.
dst
.
protonum
=
0xFF
;
...
@@ -107,7 +102,7 @@ static struct ip_conntrack_helper helper = {
...
@@ -107,7 +102,7 @@ static struct ip_conntrack_helper helper = {
.
src
=
{
.
src
=
{
.
u
=
{
.
u
=
{
.
udp
=
{
.
udp
=
{
.
port
=
__constant_htons
(
137
),
.
port
=
__constant_htons
(
NMBD_PORT
),
}
}
}
}
},
},
...
...
net/ipv4/netfilter/ip_conntrack_tftp.c
View file @
d8ac1063
...
@@ -26,9 +26,9 @@ MODULE_DESCRIPTION("tftp connection tracking helper");
...
@@ -26,9 +26,9 @@ MODULE_DESCRIPTION("tftp connection tracking helper");
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
#define MAX_PORTS 8
#define MAX_PORTS 8
static
in
t
ports
[
MAX_PORTS
];
static
shor
t
ports
[
MAX_PORTS
];
static
int
ports_c
;
static
int
ports_c
;
module_param_array
(
ports
,
in
t
,
&
ports_c
,
0400
);
module_param_array
(
ports
,
shor
t
,
&
ports_c
,
0400
);
MODULE_PARM_DESC
(
ports
,
"port numbers of tftp servers"
);
MODULE_PARM_DESC
(
ports
,
"port numbers of tftp servers"
);
#if 0
#if 0
...
@@ -100,7 +100,7 @@ static int tftp_help(struct sk_buff **pskb,
...
@@ -100,7 +100,7 @@ static int tftp_help(struct sk_buff **pskb,
}
}
static
struct
ip_conntrack_helper
tftp
[
MAX_PORTS
];
static
struct
ip_conntrack_helper
tftp
[
MAX_PORTS
];
static
char
tftp_names
[
MAX_PORTS
][
10
];
static
char
tftp_names
[
MAX_PORTS
][
sizeof
(
"tftp-65535"
)
];
static
void
fini
(
void
)
static
void
fini
(
void
)
{
{
...
...
net/ipv4/netfilter/ipt_MASQUERADE.c
View file @
d8ac1063
...
@@ -90,6 +90,12 @@ masquerade_target(struct sk_buff **pskb,
...
@@ -90,6 +90,12 @@ masquerade_target(struct sk_buff **pskb,
IP_NF_ASSERT
(
ct
&&
(
ctinfo
==
IP_CT_NEW
||
ctinfo
==
IP_CT_RELATED
IP_NF_ASSERT
(
ct
&&
(
ctinfo
==
IP_CT_NEW
||
ctinfo
==
IP_CT_RELATED
||
ctinfo
==
IP_CT_RELATED
+
IP_CT_IS_REPLY
));
||
ctinfo
==
IP_CT_RELATED
+
IP_CT_IS_REPLY
));
/* Source address is 0.0.0.0 - locally generated packet that is
* probably not supposed to be masqueraded.
*/
if
(
ct
->
tuplehash
[
IP_CT_DIR_ORIGINAL
].
tuple
.
src
.
ip
==
0
)
return
NF_ACCEPT
;
mr
=
targinfo
;
mr
=
targinfo
;
rt
=
(
struct
rtable
*
)(
*
pskb
)
->
dst
;
rt
=
(
struct
rtable
*
)(
*
pskb
)
->
dst
;
newsrc
=
inet_select_addr
(
out
,
rt
->
rt_gateway
,
RT_SCOPE_UNIVERSE
);
newsrc
=
inet_select_addr
(
out
,
rt
->
rt_gateway
,
RT_SCOPE_UNIVERSE
);
...
...
net/ipv4/netfilter/ipt_REDIRECT.c
View file @
d8ac1063
...
@@ -88,14 +88,18 @@ redirect_target(struct sk_buff **pskb,
...
@@ -88,14 +88,18 @@ redirect_target(struct sk_buff **pskb,
newdst
=
htonl
(
0x7F000001
);
newdst
=
htonl
(
0x7F000001
);
else
{
else
{
struct
in_device
*
indev
;
struct
in_device
*
indev
;
struct
in_ifaddr
*
ifa
;
/* Device might not have an associated in_device. */
newdst
=
0
;
indev
=
(
struct
in_device
*
)(
*
pskb
)
->
dev
->
ip_ptr
;
if
(
indev
==
NULL
||
indev
->
ifa_list
==
NULL
)
rcu_read_lock
();
return
NF_DROP
;
indev
=
__in_dev_get
((
*
pskb
)
->
dev
);
if
(
indev
&&
(
ifa
=
indev
->
ifa_list
))
newdst
=
ifa
->
ifa_local
;
rcu_read_unlock
();
/* Grab first address on interface. */
if
(
!
newdst
)
newdst
=
indev
->
ifa_list
->
ifa_local
;
return
NF_DROP
;
}
}
/* Transfer from original range. */
/* Transfer from original range. */
...
...
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