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
aa5743cc
Commit
aa5743cc
authored
Nov 12, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
e45d5579
b16f3385
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
369 additions
and
433 deletions
+369
-433
drivers/net/net_init.c
drivers/net/net_init.c
+0
-341
include/linux/netdevice.h
include/linux/netdevice.h
+1
-4
include/linux/pkt_cls.h
include/linux/pkt_cls.h
+3
-3
include/net/ipv6.h
include/net/ipv6.h
+9
-0
include/net/tcp.h
include/net/tcp.h
+11
-5
net/802/fc.c
net/802/fc.c
+32
-0
net/802/fddi.c
net/802/fddi.c
+41
-0
net/802/hippi.c
net/802/hippi.c
+89
-0
net/802/tr.c
net/802/tr.c
+38
-0
net/appletalk/Makefile
net/appletalk/Makefile
+1
-1
net/ethernet/eth.c
net/ethernet/eth.c
+61
-0
net/ipv4/tcp_timer.c
net/ipv4/tcp_timer.c
+6
-1
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+5
-5
net/ipv6/anycast.c
net/ipv6/anycast.c
+5
-5
net/ipv6/datagram.c
net/ipv6/datagram.c
+1
-1
net/ipv6/ip6_fib.c
net/ipv6/ip6_fib.c
+2
-2
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_flowlabel.c
+1
-1
net/ipv6/ip6_output.c
net/ipv6/ip6_output.c
+2
-2
net/ipv6/ip6_tunnel.c
net/ipv6/ip6_tunnel.c
+5
-5
net/ipv6/mcast.c
net/ipv6/mcast.c
+18
-19
net/ipv6/ndisc.c
net/ipv6/ndisc.c
+1
-1
net/ipv6/netfilter/ip6_queue.c
net/ipv6/netfilter/ip6_queue.c
+2
-2
net/ipv6/netfilter/ip6t_rt.c
net/ipv6/netfilter/ip6t_rt.c
+2
-2
net/ipv6/raw.c
net/ipv6/raw.c
+4
-4
net/ipv6/reassembly.c
net/ipv6/reassembly.c
+4
-4
net/ipv6/route.c
net/ipv6/route.c
+4
-4
net/ipv6/tcp_ipv6.c
net/ipv6/tcp_ipv6.c
+8
-8
net/ipv6/udp.c
net/ipv6/udp.c
+6
-6
net/ipv6/xfrm6_policy.c
net/ipv6/xfrm6_policy.c
+3
-3
net/ipv6/xfrm6_state.c
net/ipv6/xfrm6_state.c
+3
-3
net/sctp/ipv6.c
net/sctp/ipv6.c
+1
-1
No files found.
drivers/net/net_init.c
View file @
aa5743cc
...
...
@@ -105,260 +105,6 @@ struct net_device *alloc_netdev(int sizeof_priv, const char *mask,
}
EXPORT_SYMBOL
(
alloc_netdev
);
/**
* alloc_etherdev - Allocates and sets up an ethernet device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this ethernet device
*
* Fill in the fields of the device structure with ethernet-generic
* values. Basically does everything except registering the device.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_etherdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"eth%d"
,
ether_setup
);
}
EXPORT_SYMBOL
(
alloc_etherdev
);
static
int
eth_mac_addr
(
struct
net_device
*
dev
,
void
*
p
)
{
struct
sockaddr
*
addr
=
p
;
if
(
netif_running
(
dev
))
return
-
EBUSY
;
memcpy
(
dev
->
dev_addr
,
addr
->
sa_data
,
dev
->
addr_len
);
return
0
;
}
static
int
eth_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
if
((
new_mtu
<
68
)
||
(
new_mtu
>
1500
))
return
-
EINVAL
;
dev
->
mtu
=
new_mtu
;
return
0
;
}
#ifdef CONFIG_FDDI
/**
* alloc_fddidev - Register FDDI device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this FDDI device
*
* Fill in the fields of the device structure with FDDI-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_fddidev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"fddi%d"
,
fddi_setup
);
}
EXPORT_SYMBOL
(
alloc_fddidev
);
static
int
fddi_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
if
((
new_mtu
<
FDDI_K_SNAP_HLEN
)
||
(
new_mtu
>
FDDI_K_SNAP_DLEN
))
return
(
-
EINVAL
);
dev
->
mtu
=
new_mtu
;
return
(
0
);
}
#endif
/* CONFIG_FDDI */
#ifdef CONFIG_HIPPI
static
int
hippi_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
/*
* HIPPI's got these nice large MTUs.
*/
if
((
new_mtu
<
68
)
||
(
new_mtu
>
65280
))
return
-
EINVAL
;
dev
->
mtu
=
new_mtu
;
return
(
0
);
}
/*
* For HIPPI we will actually use the lower 4 bytes of the hardware
* address as the I-FIELD rather than the actual hardware address.
*/
static
int
hippi_mac_addr
(
struct
net_device
*
dev
,
void
*
p
)
{
struct
sockaddr
*
addr
=
p
;
if
(
netif_running
(
dev
))
return
-
EBUSY
;
memcpy
(
dev
->
dev_addr
,
addr
->
sa_data
,
dev
->
addr_len
);
return
0
;
}
static
int
hippi_neigh_setup_dev
(
struct
net_device
*
dev
,
struct
neigh_parms
*
p
)
{
/* Never send broadcast/multicast ARP messages */
p
->
mcast_probes
=
0
;
/* In IPv6 unicast probes are valid even on NBMA,
* because they are encapsulated in normal IPv6 protocol.
* Should be a generic flag.
*/
if
(
p
->
tbl
->
family
!=
AF_INET6
)
p
->
ucast_probes
=
0
;
return
0
;
}
static
void
hippi_setup
(
struct
net_device
*
dev
)
{
dev
->
set_multicast_list
=
NULL
;
dev
->
change_mtu
=
hippi_change_mtu
;
dev
->
hard_header
=
hippi_header
;
dev
->
rebuild_header
=
hippi_rebuild_header
;
dev
->
set_mac_address
=
hippi_mac_addr
;
dev
->
hard_header_parse
=
NULL
;
dev
->
hard_header_cache
=
NULL
;
dev
->
header_cache_update
=
NULL
;
dev
->
neigh_setup
=
hippi_neigh_setup_dev
;
/*
* We don't support HIPPI `ARP' for the time being, and probably
* never will unless someone else implements it. However we
* still need a fake ARPHRD to make ifconfig and friends play ball.
*/
dev
->
type
=
ARPHRD_HIPPI
;
dev
->
hard_header_len
=
HIPPI_HLEN
;
dev
->
mtu
=
65280
;
dev
->
addr_len
=
HIPPI_ALEN
;
dev
->
tx_queue_len
=
25
/* 5 */
;
memset
(
dev
->
broadcast
,
0xFF
,
HIPPI_ALEN
);
/*
* HIPPI doesn't support broadcast+multicast and we only use
* static ARP tables. ARP is disabled by hippi_neigh_setup_dev.
*/
dev
->
flags
=
0
;
}
/**
* alloc_hippi_dev - Register HIPPI device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this HIPPI device
*
* Fill in the fields of the device structure with HIPPI-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_hippi_dev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"hip%d"
,
hippi_setup
);
}
EXPORT_SYMBOL
(
alloc_hippi_dev
);
#endif
/* CONFIG_HIPPI */
void
ether_setup
(
struct
net_device
*
dev
)
{
/* Fill in the fields of the device structure with ethernet-generic values.
This should be in a common file instead of per-driver. */
dev
->
change_mtu
=
eth_change_mtu
;
dev
->
hard_header
=
eth_header
;
dev
->
rebuild_header
=
eth_rebuild_header
;
dev
->
set_mac_address
=
eth_mac_addr
;
dev
->
hard_header_cache
=
eth_header_cache
;
dev
->
header_cache_update
=
eth_header_cache_update
;
dev
->
hard_header_parse
=
eth_header_parse
;
dev
->
type
=
ARPHRD_ETHER
;
dev
->
hard_header_len
=
ETH_HLEN
;
dev
->
mtu
=
1500
;
/* eth_mtu */
dev
->
addr_len
=
ETH_ALEN
;
dev
->
tx_queue_len
=
1000
;
/* Ethernet wants good queues */
memset
(
dev
->
broadcast
,
0xFF
,
ETH_ALEN
);
/* New-style flags. */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
}
EXPORT_SYMBOL
(
ether_setup
);
#ifdef CONFIG_FDDI
void
fddi_setup
(
struct
net_device
*
dev
)
{
/*
* Fill in the fields of the device structure with FDDI-generic values.
* This should be in a common file instead of per-driver.
*/
dev
->
change_mtu
=
fddi_change_mtu
;
dev
->
hard_header
=
fddi_header
;
dev
->
rebuild_header
=
fddi_rebuild_header
;
dev
->
type
=
ARPHRD_FDDI
;
dev
->
hard_header_len
=
FDDI_K_SNAP_HLEN
+
3
;
/* Assume 802.2 SNAP hdr len + 3 pad bytes */
dev
->
mtu
=
FDDI_K_SNAP_DLEN
;
/* Assume max payload of 802.2 SNAP frame */
dev
->
addr_len
=
FDDI_K_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on FDDI */
memset
(
dev
->
broadcast
,
0xFF
,
FDDI_K_ALEN
);
/* New-style flags */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
}
EXPORT_SYMBOL
(
fddi_setup
);
#endif
/* CONFIG_FDDI */
#if defined(CONFIG_ATALK) || defined(CONFIG_ATALK_MODULE)
static
int
ltalk_change_mtu
(
struct
net_device
*
dev
,
int
mtu
)
{
return
-
EINVAL
;
}
static
int
ltalk_mac_addr
(
struct
net_device
*
dev
,
void
*
addr
)
{
return
-
EINVAL
;
}
void
ltalk_setup
(
struct
net_device
*
dev
)
{
/* Fill in the fields of the device structure with localtalk-generic values. */
dev
->
change_mtu
=
ltalk_change_mtu
;
dev
->
hard_header
=
NULL
;
dev
->
rebuild_header
=
NULL
;
dev
->
set_mac_address
=
ltalk_mac_addr
;
dev
->
hard_header_cache
=
NULL
;
dev
->
header_cache_update
=
NULL
;
dev
->
type
=
ARPHRD_LOCALTLK
;
dev
->
hard_header_len
=
LTALK_HLEN
;
dev
->
mtu
=
LTALK_MTU
;
dev
->
addr_len
=
LTALK_ALEN
;
dev
->
tx_queue_len
=
10
;
dev
->
broadcast
[
0
]
=
0xFF
;
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
|
IFF_NOARP
;
}
EXPORT_SYMBOL
(
ltalk_setup
);
#endif
/* CONFIG_ATALK || CONFIG_ATALK_MODULE */
int
register_netdev
(
struct
net_device
*
dev
)
{
int
err
;
...
...
@@ -404,90 +150,3 @@ void unregister_netdev(struct net_device *dev)
EXPORT_SYMBOL
(
register_netdev
);
EXPORT_SYMBOL
(
unregister_netdev
);
#ifdef CONFIG_TR
void
tr_setup
(
struct
net_device
*
dev
)
{
/*
* Configure and register
*/
dev
->
hard_header
=
tr_header
;
dev
->
rebuild_header
=
tr_rebuild_header
;
dev
->
type
=
ARPHRD_IEEE802_TR
;
dev
->
hard_header_len
=
TR_HLEN
;
dev
->
mtu
=
2000
;
dev
->
addr_len
=
TR_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on tr */
memset
(
dev
->
broadcast
,
0xFF
,
TR_ALEN
);
/* New-style flags. */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
}
/**
* alloc_trdev - Register token ring device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this token ring device
*
* Fill in the fields of the device structure with token ring-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_trdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"tr%d"
,
tr_setup
);
}
EXPORT_SYMBOL
(
tr_setup
);
EXPORT_SYMBOL
(
alloc_trdev
);
#endif
/* CONFIG_TR */
#ifdef CONFIG_NET_FC
void
fc_setup
(
struct
net_device
*
dev
)
{
dev
->
hard_header
=
fc_header
;
dev
->
rebuild_header
=
fc_rebuild_header
;
dev
->
type
=
ARPHRD_IEEE802
;
dev
->
hard_header_len
=
FC_HLEN
;
dev
->
mtu
=
2024
;
dev
->
addr_len
=
FC_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on fc */
memset
(
dev
->
broadcast
,
0xFF
,
FC_ALEN
);
/* New-style flags. */
dev
->
flags
=
IFF_BROADCAST
;
}
/**
* alloc_fcdev - Register fibre channel device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this fibre channel device
*
* Fill in the fields of the device structure with fibre channel-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_fcdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"fc%d"
,
fc_setup
);
}
EXPORT_SYMBOL
(
fc_setup
);
EXPORT_SYMBOL
(
alloc_fcdev
);
#endif
/* CONFIG_NET_FC */
include/linux/netdevice.h
View file @
aa5743cc
...
...
@@ -902,10 +902,7 @@ static inline void netif_tx_disable(struct net_device *dev)
/* These functions live elsewhere (drivers/net/net_init.c, but related) */
extern
void
ether_setup
(
struct
net_device
*
dev
);
extern
void
fddi_setup
(
struct
net_device
*
dev
);
extern
void
tr_setup
(
struct
net_device
*
dev
);
extern
void
fc_setup
(
struct
net_device
*
dev
);
extern
void
fc_freedev
(
struct
net_device
*
dev
);
/* Support for loadable net-drivers */
extern
struct
net_device
*
alloc_netdev
(
int
sizeof_priv
,
const
char
*
name
,
void
(
*
setup
)(
struct
net_device
*
));
...
...
include/linux/pkt_cls.h
View file @
aa5743cc
...
...
@@ -138,9 +138,9 @@ struct tc_police
struct
tcf_t
{
__u
32
install
;
__u
32
lastuse
;
__u
32
expires
;
__u
64
install
;
__u
64
lastuse
;
__u
64
expires
;
};
struct
tc_cnt
...
...
include/net/ipv6.h
View file @
aa5743cc
...
...
@@ -296,6 +296,15 @@ static inline void ipv6_addr_set(struct in6_addr *addr,
}
#endif
static
inline
int
ipv6_addr_equal
(
const
struct
in6_addr
*
a1
,
const
struct
in6_addr
*
a2
)
{
return
(
a1
->
s6_addr32
[
0
]
==
a2
->
s6_addr32
[
0
]
&&
a1
->
s6_addr32
[
1
]
==
a2
->
s6_addr32
[
1
]
&&
a1
->
s6_addr32
[
2
]
==
a2
->
s6_addr32
[
2
]
&&
a1
->
s6_addr32
[
3
]
==
a2
->
s6_addr32
[
3
]);
}
static
inline
int
ipv6_addr_any
(
const
struct
in6_addr
*
a
)
{
return
((
a
->
s6_addr32
[
0
]
|
a
->
s6_addr32
[
1
]
|
...
...
include/net/tcp.h
View file @
aa5743cc
...
...
@@ -361,8 +361,8 @@ extern void tcp_tw_deschedule(struct tcp_tw_bucket *tw);
#define TCP_IPV6_MATCH(__sk, __saddr, __daddr, __ports, __dif) \
(((*((__u32 *)&(inet_sk(__sk)->dport)))== (__ports)) && \
((__sk)->sk_family == AF_INET6) && \
!ipv6_addr_cmp
(&inet6_sk(__sk)->daddr, (__saddr)) && \
!ipv6_addr_cmp
(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \
ipv6_addr_equal
(&inet6_sk(__sk)->daddr, (__saddr)) && \
ipv6_addr_equal
(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \
(!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif))))
/* These can have wildcards, don't try too hard. */
...
...
@@ -965,7 +965,9 @@ extern void tcp_reset_keepalive_timer(struct sock *, unsigned long);
extern
unsigned
int
tcp_sync_mss
(
struct
sock
*
sk
,
u32
pmtu
);
extern
unsigned
int
tcp_current_mss
(
struct
sock
*
sk
,
int
large
);
extern
const
char
timer_bug_msg
[];
#ifdef TCP_DEBUG
extern
const
char
tcp_timer_bug_msg
[];
#endif
/* tcp_diag.c */
extern
void
tcp_get_info
(
struct
sock
*
,
struct
tcp_info
*
);
...
...
@@ -998,7 +1000,9 @@ static inline void tcp_clear_xmit_timer(struct sock *sk, int what)
#endif
break
;
default:
printk
(
timer_bug_msg
);
#ifdef TCP_DEBUG
printk
(
tcp_timer_bug_msg
);
#endif
return
;
};
...
...
@@ -1033,7 +1037,9 @@ static inline void tcp_reset_xmit_timer(struct sock *sk, int what, unsigned long
break
;
default:
printk
(
timer_bug_msg
);
#ifdef TCP_DEBUG
printk
(
tcp_timer_bug_msg
);
#endif
};
}
...
...
net/802/fc.c
View file @
aa5743cc
...
...
@@ -129,3 +129,35 @@ fc_type_trans(struct sk_buff *skb, struct net_device *dev)
return
ntohs
(
ETH_P_802_2
);
}
static
void
fc_setup
(
struct
net_device
*
dev
)
{
dev
->
hard_header
=
fc_header
;
dev
->
rebuild_header
=
fc_rebuild_header
;
dev
->
type
=
ARPHRD_IEEE802
;
dev
->
hard_header_len
=
FC_HLEN
;
dev
->
mtu
=
2024
;
dev
->
addr_len
=
FC_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on fc */
dev
->
flags
=
IFF_BROADCAST
;
memset
(
dev
->
broadcast
,
0xFF
,
FC_ALEN
);
}
/**
* alloc_fcdev - Register fibre channel device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this fibre channel device
*
* Fill in the fields of the device structure with fibre channel-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_fcdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"fc%d"
,
fc_setup
);
}
EXPORT_SYMBOL
(
alloc_fcdev
);
net/802/fddi.c
View file @
aa5743cc
...
...
@@ -166,3 +166,44 @@ unsigned short fddi_type_trans(struct sk_buff *skb, struct net_device *dev)
}
EXPORT_SYMBOL
(
fddi_type_trans
);
static
int
fddi_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
if
((
new_mtu
<
FDDI_K_SNAP_HLEN
)
||
(
new_mtu
>
FDDI_K_SNAP_DLEN
))
return
(
-
EINVAL
);
dev
->
mtu
=
new_mtu
;
return
(
0
);
}
static
void
fddi_setup
(
struct
net_device
*
dev
)
{
dev
->
change_mtu
=
fddi_change_mtu
;
dev
->
hard_header
=
fddi_header
;
dev
->
rebuild_header
=
fddi_rebuild_header
;
dev
->
type
=
ARPHRD_FDDI
;
dev
->
hard_header_len
=
FDDI_K_SNAP_HLEN
+
3
;
/* Assume 802.2 SNAP hdr len + 3 pad bytes */
dev
->
mtu
=
FDDI_K_SNAP_DLEN
;
/* Assume max payload of 802.2 SNAP frame */
dev
->
addr_len
=
FDDI_K_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on FDDI */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
memset
(
dev
->
broadcast
,
0xFF
,
FDDI_K_ALEN
);
}
/**
* alloc_fddidev - Register FDDI device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this FDDI device
*
* Fill in the fields of the device structure with FDDI-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_fddidev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"fddi%d"
,
fddi_setup
);
}
EXPORT_SYMBOL
(
alloc_fddidev
);
net/802/hippi.c
View file @
aa5743cc
...
...
@@ -154,3 +154,92 @@ unsigned short hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
}
EXPORT_SYMBOL
(
hippi_type_trans
);
static
int
hippi_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
/*
* HIPPI's got these nice large MTUs.
*/
if
((
new_mtu
<
68
)
||
(
new_mtu
>
65280
))
return
-
EINVAL
;
dev
->
mtu
=
new_mtu
;
return
(
0
);
}
/*
* For HIPPI we will actually use the lower 4 bytes of the hardware
* address as the I-FIELD rather than the actual hardware address.
*/
static
int
hippi_mac_addr
(
struct
net_device
*
dev
,
void
*
p
)
{
struct
sockaddr
*
addr
=
p
;
if
(
netif_running
(
dev
))
return
-
EBUSY
;
memcpy
(
dev
->
dev_addr
,
addr
->
sa_data
,
dev
->
addr_len
);
return
0
;
}
static
int
hippi_neigh_setup_dev
(
struct
net_device
*
dev
,
struct
neigh_parms
*
p
)
{
/* Never send broadcast/multicast ARP messages */
p
->
mcast_probes
=
0
;
/* In IPv6 unicast probes are valid even on NBMA,
* because they are encapsulated in normal IPv6 protocol.
* Should be a generic flag.
*/
if
(
p
->
tbl
->
family
!=
AF_INET6
)
p
->
ucast_probes
=
0
;
return
0
;
}
static
void
hippi_setup
(
struct
net_device
*
dev
)
{
dev
->
set_multicast_list
=
NULL
;
dev
->
change_mtu
=
hippi_change_mtu
;
dev
->
hard_header
=
hippi_header
;
dev
->
rebuild_header
=
hippi_rebuild_header
;
dev
->
set_mac_address
=
hippi_mac_addr
;
dev
->
hard_header_parse
=
NULL
;
dev
->
hard_header_cache
=
NULL
;
dev
->
header_cache_update
=
NULL
;
dev
->
neigh_setup
=
hippi_neigh_setup_dev
;
/*
* We don't support HIPPI `ARP' for the time being, and probably
* never will unless someone else implements it. However we
* still need a fake ARPHRD to make ifconfig and friends play ball.
*/
dev
->
type
=
ARPHRD_HIPPI
;
dev
->
hard_header_len
=
HIPPI_HLEN
;
dev
->
mtu
=
65280
;
dev
->
addr_len
=
HIPPI_ALEN
;
dev
->
tx_queue_len
=
25
/* 5 */
;
memset
(
dev
->
broadcast
,
0xFF
,
HIPPI_ALEN
);
/*
* HIPPI doesn't support broadcast+multicast and we only use
* static ARP tables. ARP is disabled by hippi_neigh_setup_dev.
*/
dev
->
flags
=
0
;
}
/**
* alloc_hippi_dev - Register HIPPI device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this HIPPI device
*
* Fill in the fields of the device structure with HIPPI-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_hippi_dev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"hip%d"
,
hippi_setup
);
}
EXPORT_SYMBOL
(
alloc_hippi_dev
);
net/802/tr.c
View file @
aa5743cc
...
...
@@ -583,6 +583,43 @@ static struct file_operations rif_seq_fops = {
#endif
static
void
tr_setup
(
struct
net_device
*
dev
)
{
/*
* Configure and register
*/
dev
->
hard_header
=
tr_header
;
dev
->
rebuild_header
=
tr_rebuild_header
;
dev
->
type
=
ARPHRD_IEEE802_TR
;
dev
->
hard_header_len
=
TR_HLEN
;
dev
->
mtu
=
2000
;
dev
->
addr_len
=
TR_ALEN
;
dev
->
tx_queue_len
=
100
;
/* Long queues on tr */
memset
(
dev
->
broadcast
,
0xFF
,
TR_ALEN
);
/* New-style flags. */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
}
/**
* alloc_trdev - Register token ring device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this token ring device
*
* Fill in the fields of the device structure with token ring-generic values.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_trdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"tr%d"
,
tr_setup
);
}
/*
* Called during bootup. We don't actually have to initialise
* too much for this.
...
...
@@ -604,3 +641,4 @@ module_init(rif_init);
EXPORT_SYMBOL
(
tr_source_route
);
EXPORT_SYMBOL
(
tr_type_trans
);
EXPORT_SYMBOL
(
alloc_trdev
);
net/appletalk/Makefile
View file @
aa5743cc
...
...
@@ -4,6 +4,6 @@
obj-$(CONFIG_ATALK)
+=
appletalk.o
appletalk-y
:=
aarp.o ddp.o
appletalk-y
:=
aarp.o ddp.o
dev.o
appletalk-$(CONFIG_PROC_FS)
+=
atalk_proc.o
appletalk-$(CONFIG_SYSCTL)
+=
sysctl_net_atalk.o
net/ethernet/eth.c
View file @
aa5743cc
...
...
@@ -245,3 +245,64 @@ void eth_header_cache_update(struct hh_cache *hh, struct net_device *dev, unsign
}
EXPORT_SYMBOL
(
eth_type_trans
);
static
int
eth_mac_addr
(
struct
net_device
*
dev
,
void
*
p
)
{
struct
sockaddr
*
addr
=
p
;
if
(
netif_running
(
dev
))
return
-
EBUSY
;
memcpy
(
dev
->
dev_addr
,
addr
->
sa_data
,
dev
->
addr_len
);
return
0
;
}
static
int
eth_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
if
((
new_mtu
<
68
)
||
(
new_mtu
>
1500
))
return
-
EINVAL
;
dev
->
mtu
=
new_mtu
;
return
0
;
}
/*
* Fill in the fields of the device structure with ethernet-generic values.
*/
void
ether_setup
(
struct
net_device
*
dev
)
{
dev
->
change_mtu
=
eth_change_mtu
;
dev
->
hard_header
=
eth_header
;
dev
->
rebuild_header
=
eth_rebuild_header
;
dev
->
set_mac_address
=
eth_mac_addr
;
dev
->
hard_header_cache
=
eth_header_cache
;
dev
->
header_cache_update
=
eth_header_cache_update
;
dev
->
hard_header_parse
=
eth_header_parse
;
dev
->
type
=
ARPHRD_ETHER
;
dev
->
hard_header_len
=
ETH_HLEN
;
dev
->
mtu
=
1500
;
/* eth_mtu */
dev
->
addr_len
=
ETH_ALEN
;
dev
->
tx_queue_len
=
1000
;
/* Ethernet wants good queues */
dev
->
flags
=
IFF_BROADCAST
|
IFF_MULTICAST
;
memset
(
dev
->
broadcast
,
0xFF
,
ETH_ALEN
);
}
EXPORT_SYMBOL
(
ether_setup
);
/**
* alloc_etherdev - Allocates and sets up an ethernet device
* @sizeof_priv: Size of additional driver-private structure to be allocated
* for this ethernet device
*
* Fill in the fields of the device structure with ethernet-generic
* values. Basically does everything except registering the device.
*
* Constructs a new net device, complete with a private data area of
* size @sizeof_priv. A 32-byte (not bit) alignment is enforced for
* this private data area.
*/
struct
net_device
*
alloc_etherdev
(
int
sizeof_priv
)
{
return
alloc_netdev
(
sizeof_priv
,
"eth%d"
,
ether_setup
);
}
EXPORT_SYMBOL
(
alloc_etherdev
);
net/ipv4/tcp_timer.c
View file @
aa5743cc
...
...
@@ -36,7 +36,9 @@ static void tcp_write_timer(unsigned long);
static
void
tcp_delack_timer
(
unsigned
long
);
static
void
tcp_keepalive_timer
(
unsigned
long
data
);
const
char
timer_bug_msg
[]
=
KERN_DEBUG
"tcpbug: unknown timer value
\n
"
;
#ifdef TCP_DEBUG
const
char
tcp_timer_bug_msg
[]
=
KERN_DEBUG
"tcpbug: unknown timer value
\n
"
;
#endif
/*
* Using different timers for retransmit, delayed acks and probes
...
...
@@ -651,3 +653,6 @@ EXPORT_SYMBOL(tcp_clear_xmit_timers);
EXPORT_SYMBOL
(
tcp_delete_keepalive_timer
);
EXPORT_SYMBOL
(
tcp_init_xmit_timers
);
EXPORT_SYMBOL
(
tcp_reset_keepalive_timer
);
#ifdef TCP_DEBUG
EXPORT_SYMBOL
(
tcp_timer_bug_msg
);
#endif
net/ipv6/addrconf.c
View file @
aa5743cc
...
...
@@ -921,7 +921,7 @@ int ipv6_chk_addr(struct in6_addr *addr, struct net_device *dev, int strict)
read_lock_bh
(
&
addrconf_hash_lock
);
for
(
ifp
=
inet6_addr_lst
[
hash
];
ifp
;
ifp
=
ifp
->
lst_next
)
{
if
(
ipv6_addr_
cmp
(
&
ifp
->
addr
,
addr
)
==
0
&&
if
(
ipv6_addr_
equal
(
&
ifp
->
addr
,
addr
)
&&
!
(
ifp
->
flags
&
IFA_F_TENTATIVE
))
{
if
(
dev
==
NULL
||
ifp
->
idev
->
dev
==
dev
||
!
(
ifp
->
scope
&
(
IFA_LINK
|
IFA_HOST
)
||
strict
))
...
...
@@ -940,7 +940,7 @@ int ipv6_chk_same_addr(const struct in6_addr *addr, struct net_device *dev)
read_lock_bh
(
&
addrconf_hash_lock
);
for
(
ifp
=
inet6_addr_lst
[
hash
];
ifp
;
ifp
=
ifp
->
lst_next
)
{
if
(
ipv6_addr_
cmp
(
&
ifp
->
addr
,
addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
ifp
->
addr
,
addr
)
)
{
if
(
dev
==
NULL
||
ifp
->
idev
->
dev
==
dev
)
break
;
}
...
...
@@ -956,7 +956,7 @@ struct inet6_ifaddr * ipv6_get_ifaddr(struct in6_addr *addr, struct net_device *
read_lock_bh
(
&
addrconf_hash_lock
);
for
(
ifp
=
inet6_addr_lst
[
hash
];
ifp
;
ifp
=
ifp
->
lst_next
)
{
if
(
ipv6_addr_
cmp
(
&
ifp
->
addr
,
addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
ifp
->
addr
,
addr
)
)
{
if
(
dev
==
NULL
||
ifp
->
idev
->
dev
==
dev
||
!
(
ifp
->
scope
&
(
IFA_LINK
|
IFA_HOST
)
||
strict
))
{
in6_ifa_hold
(
ifp
);
...
...
@@ -992,7 +992,7 @@ int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2)
return
1
;
if
(
sk2_rcv_saddr6
&&
!
ipv6_addr_cmp
(
sk_rcv_saddr6
,
sk2_rcv_saddr6
))
ipv6_addr_equal
(
sk_rcv_saddr6
,
sk2_rcv_saddr6
))
return
1
;
if
(
addr_type
==
IPV6_ADDR_MAPPED
&&
...
...
@@ -1630,7 +1630,7 @@ static int inet6_addr_del(int ifindex, struct in6_addr *pfx, int plen)
read_lock_bh
(
&
idev
->
lock
);
for
(
ifp
=
idev
->
addr_list
;
ifp
;
ifp
=
ifp
->
if_next
)
{
if
(
ifp
->
prefix_len
==
plen
&&
(
!
memcmp
(
pfx
,
&
ifp
->
addr
,
sizeof
(
struct
in6_addr
))
))
{
ipv6_addr_equal
(
pfx
,
&
ifp
->
addr
))
{
in6_ifa_hold
(
ifp
);
read_unlock_bh
(
&
idev
->
lock
);
...
...
net/ipv6/anycast.c
View file @
aa5743cc
...
...
@@ -205,7 +205,7 @@ int ipv6_sock_ac_drop(struct sock *sk, int ifindex, struct in6_addr *addr)
prev_pac
=
NULL
;
for
(
pac
=
np
->
ipv6_ac_list
;
pac
;
pac
=
pac
->
acl_next
)
{
if
((
ifindex
==
0
||
pac
->
acl_ifindex
==
ifindex
)
&&
ipv6_addr_
cmp
(
&
pac
->
acl_addr
,
addr
)
==
0
)
ipv6_addr_
equal
(
&
pac
->
acl_addr
,
addr
)
)
break
;
prev_pac
=
pac
;
}
...
...
@@ -278,7 +278,7 @@ int inet6_ac_check(struct sock *sk, struct in6_addr *addr, int ifindex)
for (pac=np->ipv6_ac_list; pac; pac=pac->acl_next) {
if (ifindex && pac->acl_ifindex != ifindex)
continue;
found = ipv6_addr_
cmp(&pac->acl_addr, addr) == 0
;
found = ipv6_addr_
equal(&pac->acl_addr, addr)
;
if (found)
break;
}
...
...
@@ -320,7 +320,7 @@ int ipv6_dev_ac_inc(struct net_device *dev, struct in6_addr *addr)
}
for
(
aca
=
idev
->
ac_list
;
aca
;
aca
=
aca
->
aca_next
)
{
if
(
ipv6_addr_
cmp
(
&
aca
->
aca_addr
,
addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
aca
->
aca_addr
,
addr
)
)
{
aca
->
aca_users
++
;
err
=
0
;
goto
out
;
...
...
@@ -384,7 +384,7 @@ int __ipv6_dev_ac_dec(struct inet6_dev *idev, struct in6_addr *addr)
write_lock_bh
(
&
idev
->
lock
);
prev_aca
=
NULL
;
for
(
aca
=
idev
->
ac_list
;
aca
;
aca
=
aca
->
aca_next
)
{
if
(
ipv6_addr_
cmp
(
&
aca
->
aca_addr
,
addr
)
==
0
)
if
(
ipv6_addr_
equal
(
&
aca
->
aca_addr
,
addr
)
)
break
;
prev_aca
=
aca
;
}
...
...
@@ -436,7 +436,7 @@ static int ipv6_chk_acast_dev(struct net_device *dev, struct in6_addr *addr)
if
(
idev
)
{
read_lock_bh
(
&
idev
->
lock
);
for
(
aca
=
idev
->
ac_list
;
aca
;
aca
=
aca
->
aca_next
)
if
(
ipv6_addr_
cmp
(
&
aca
->
aca_addr
,
addr
)
==
0
)
if
(
ipv6_addr_
equal
(
&
aca
->
aca_addr
,
addr
)
)
break
;
read_unlock_bh
(
&
idev
->
lock
);
in6_dev_put
(
idev
);
...
...
net/ipv6/datagram.c
View file @
aa5743cc
...
...
@@ -190,7 +190,7 @@ int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
}
ip6_dst_store
(
sk
,
dst
,
!
ipv6_addr_cmp
(
&
fl
.
fl6_dst
,
&
np
->
daddr
)
?
ipv6_addr_equal
(
&
fl
.
fl6_dst
,
&
np
->
daddr
)
?
&
np
->
daddr
:
NULL
);
sk
->
sk_state
=
TCP_ESTABLISHED
;
...
...
net/ipv6/ip6_fib.c
View file @
aa5743cc
...
...
@@ -451,8 +451,8 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
if
(
iter
->
rt6i_dev
==
rt
->
rt6i_dev
&&
iter
->
rt6i_idev
==
rt
->
rt6i_idev
&&
ipv6_addr_
cmp
(
&
iter
->
rt6i_gateway
,
&
rt
->
rt6i_gateway
)
==
0
)
{
ipv6_addr_
equal
(
&
iter
->
rt6i_gateway
,
&
rt
->
rt6i_gateway
)
)
{
if
(
!
(
iter
->
rt6i_flags
&
RTF_EXPIRES
))
return
-
EEXIST
;
iter
->
rt6i_expires
=
rt
->
rt6i_expires
;
...
...
net/ipv6/ip6_flowlabel.c
View file @
aa5743cc
...
...
@@ -500,7 +500,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
goto
release
;
err
=
-
EINVAL
;
if
(
ipv6_addr_cmp
(
&
fl1
->
dst
,
&
fl
->
dst
)
||
if
(
!
ipv6_addr_equal
(
&
fl1
->
dst
,
&
fl
->
dst
)
||
ipv6_opt_cmp
(
fl1
->
opt
,
fl
->
opt
))
goto
release
;
...
...
net/ipv6/ip6_output.c
View file @
aa5743cc
...
...
@@ -768,9 +768,9 @@ int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi *fl)
*/
if
(((
rt
->
rt6i_dst
.
plen
!=
128
||
ipv6_addr_cmp
(
&
fl
->
fl6_dst
,
&
rt
->
rt6i_dst
.
addr
))
!
ipv6_addr_equal
(
&
fl
->
fl6_dst
,
&
rt
->
rt6i_dst
.
addr
))
&&
(
np
->
daddr_cache
==
NULL
||
ipv6_addr_cmp
(
&
fl
->
fl6_dst
,
np
->
daddr_cache
)))
!
ipv6_addr_equal
(
&
fl
->
fl6_dst
,
np
->
daddr_cache
)))
||
(
fl
->
oif
&&
fl
->
oif
!=
(
*
dst
)
->
dev
->
ifindex
))
{
*
dst
=
NULL
;
}
else
...
...
net/ipv6/ip6_tunnel.c
View file @
aa5743cc
...
...
@@ -133,8 +133,8 @@ ip6ip6_tnl_lookup(struct in6_addr *remote, struct in6_addr *local)
struct
ip6_tnl
*
t
;
for
(
t
=
tnls_r_l
[
h0
^
h1
];
t
;
t
=
t
->
next
)
{
if
(
!
ipv6_addr_cmp
(
local
,
&
t
->
parms
.
laddr
)
&&
!
ipv6_addr_cmp
(
remote
,
&
t
->
parms
.
raddr
)
&&
if
(
ipv6_addr_equal
(
local
,
&
t
->
parms
.
laddr
)
&&
ipv6_addr_equal
(
remote
,
&
t
->
parms
.
raddr
)
&&
(
t
->
dev
->
flags
&
IFF_UP
))
return
t
;
}
...
...
@@ -284,8 +284,8 @@ ip6ip6_tnl_locate(struct ip6_tnl_parm *p, struct ip6_tnl **pt, int create)
return
-
EINVAL
;
for
(
t
=
*
ip6ip6_bucket
(
p
);
t
;
t
=
t
->
next
)
{
if
(
!
ipv6_addr_cmp
(
local
,
&
t
->
parms
.
laddr
)
&&
!
ipv6_addr_cmp
(
remote
,
&
t
->
parms
.
raddr
))
{
if
(
ipv6_addr_equal
(
local
,
&
t
->
parms
.
laddr
)
&&
ipv6_addr_equal
(
remote
,
&
t
->
parms
.
raddr
))
{
*
pt
=
t
;
return
(
create
?
-
EEXIST
:
0
);
}
...
...
@@ -602,7 +602,7 @@ static inline struct ipv6_txoptions *create_tel(__u8 encap_limit)
static
inline
int
ip6ip6_tnl_addr_conflict
(
struct
ip6_tnl
*
t
,
struct
ipv6hdr
*
hdr
)
{
return
!
ipv6_addr_cmp
(
&
t
->
parms
.
raddr
,
&
hdr
->
saddr
);
return
ipv6_addr_equal
(
&
t
->
parms
.
raddr
,
&
hdr
->
saddr
);
}
/**
...
...
net/ipv6/mcast.c
View file @
aa5743cc
...
...
@@ -247,7 +247,7 @@ int ipv6_sock_mc_drop(struct sock *sk, int ifindex, struct in6_addr *addr)
write_lock_bh
(
&
ipv6_sk_mc_lock
);
for
(
lnk
=
&
np
->
ipv6_mc_list
;
(
mc_lst
=
*
lnk
)
!=
NULL
;
lnk
=
&
mc_lst
->
next
)
{
if
((
ifindex
==
0
||
mc_lst
->
ifindex
==
ifindex
)
&&
ipv6_addr_
cmp
(
&
mc_lst
->
addr
,
addr
)
==
0
)
{
ipv6_addr_
equal
(
&
mc_lst
->
addr
,
addr
)
)
{
struct
net_device
*
dev
;
*
lnk
=
mc_lst
->
next
;
...
...
@@ -369,7 +369,7 @@ int ip6_mc_source(int add, int omode, struct sock *sk,
for
(
pmc
=
inet6
->
ipv6_mc_list
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
pgsr
->
gsr_interface
&&
pmc
->
ifindex
!=
pgsr
->
gsr_interface
)
continue
;
if
(
ipv6_addr_
cmp
(
&
pmc
->
addr
,
group
)
==
0
)
if
(
ipv6_addr_
equal
(
&
pmc
->
addr
,
group
)
)
break
;
}
if
(
!
pmc
)
/* must have a prior join */
...
...
@@ -485,7 +485,7 @@ int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf)
for
(
pmc
=
inet6
->
ipv6_mc_list
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
pmc
->
ifindex
!=
gsf
->
gf_interface
)
continue
;
if
(
ipv6_addr_
cmp
(
&
pmc
->
addr
,
group
)
==
0
)
if
(
ipv6_addr_
equal
(
&
pmc
->
addr
,
group
)
)
break
;
}
if
(
!
pmc
)
/* must have a prior join */
...
...
@@ -556,7 +556,7 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
for
(
pmc
=
inet6
->
ipv6_mc_list
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
pmc
->
ifindex
!=
gsf
->
gf_interface
)
continue
;
if
(
ipv6_addr_
cmp
(
group
,
&
pmc
->
addr
)
==
0
)
if
(
ipv6_addr_
equal
(
group
,
&
pmc
->
addr
)
)
break
;
}
if
(
!
pmc
)
/* must have a prior join */
...
...
@@ -603,7 +603,7 @@ int inet6_mc_check(struct sock *sk, struct in6_addr *mc_addr,
read_lock
(
&
ipv6_sk_mc_lock
);
for
(
mc
=
np
->
ipv6_mc_list
;
mc
;
mc
=
mc
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
mc
->
addr
,
mc_addr
)
==
0
)
if
(
ipv6_addr_
equal
(
&
mc
->
addr
,
mc_addr
)
)
break
;
}
if
(
!
mc
)
{
...
...
@@ -617,7 +617,7 @@ int inet6_mc_check(struct sock *sk, struct in6_addr *mc_addr,
int
i
;
for
(
i
=
0
;
i
<
psl
->
sl_count
;
i
++
)
{
if
(
ipv6_addr_
cmp
(
&
psl
->
sl_addr
[
i
],
src_addr
)
==
0
)
if
(
ipv6_addr_
equal
(
&
psl
->
sl_addr
[
i
],
src_addr
)
)
break
;
}
if
(
mc
->
sfmode
==
MCAST_INCLUDE
&&
i
>=
psl
->
sl_count
)
...
...
@@ -740,7 +740,7 @@ static void mld_del_delrec(struct inet6_dev *idev, struct in6_addr *pmca)
write_lock_bh
(
&
idev
->
mc_lock
);
pmc_prev
=
NULL
;
for
(
pmc
=
idev
->
mc_tomb
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
pmc
->
mca_addr
,
pmca
)
==
0
)
if
(
ipv6_addr_
equal
(
&
pmc
->
mca_addr
,
pmca
)
)
break
;
pmc_prev
=
pmc
;
}
...
...
@@ -816,7 +816,7 @@ int ipv6_dev_mc_inc(struct net_device *dev, struct in6_addr *addr)
}
for
(
mc
=
idev
->
mc_list
;
mc
;
mc
=
mc
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
mc
->
mca_addr
,
addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
mc
->
mca_addr
,
addr
)
)
{
mc
->
mca_users
++
;
write_unlock_bh
(
&
idev
->
lock
);
ip6_mc_add_src
(
idev
,
&
mc
->
mca_addr
,
MCAST_EXCLUDE
,
0
,
...
...
@@ -878,7 +878,7 @@ int __ipv6_dev_mc_dec(struct inet6_dev *idev, struct in6_addr *addr)
write_lock_bh
(
&
idev
->
lock
);
for
(
map
=
&
idev
->
mc_list
;
(
ma
=*
map
)
!=
NULL
;
map
=
&
ma
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
ma
->
mca_addr
,
addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
ma
->
mca_addr
,
addr
)
)
{
if
(
--
ma
->
mca_users
==
0
)
{
*
map
=
ma
->
next
;
write_unlock_bh
(
&
idev
->
lock
);
...
...
@@ -953,7 +953,7 @@ int ipv6_chk_mcast_addr(struct net_device *dev, struct in6_addr *group,
if
(
idev
)
{
read_lock_bh
(
&
idev
->
lock
);
for
(
mc
=
idev
->
mc_list
;
mc
;
mc
=
mc
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
mc
->
mca_addr
,
group
)
==
0
)
if
(
ipv6_addr_
equal
(
&
mc
->
mca_addr
,
group
)
)
break
;
}
if
(
mc
)
{
...
...
@@ -962,8 +962,7 @@ int ipv6_chk_mcast_addr(struct net_device *dev, struct in6_addr *group,
spin_lock_bh
(
&
mc
->
mca_lock
);
for
(
psf
=
mc
->
mca_sources
;
psf
;
psf
=
psf
->
sf_next
)
{
if
(
ipv6_addr_cmp
(
&
psf
->
sf_addr
,
src_addr
)
==
0
)
if
(
ipv6_addr_equal
(
&
psf
->
sf_addr
,
src_addr
))
break
;
}
if
(
psf
)
...
...
@@ -1040,7 +1039,7 @@ static void mld_marksources(struct ifmcaddr6 *pmc, int nsrcs,
if
(
scount
==
nsrcs
)
break
;
for
(
i
=
0
;
i
<
nsrcs
;
i
++
)
if
(
ipv6_addr_
cmp
(
&
srcs
[
i
],
&
psf
->
sf_addr
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
srcs
[
i
],
&
psf
->
sf_addr
)
)
{
psf
->
sf_gsresp
=
1
;
scount
++
;
break
;
...
...
@@ -1135,7 +1134,7 @@ int igmp6_event_query(struct sk_buff *skb)
}
else
{
for
(
ma
=
idev
->
mc_list
;
ma
;
ma
=
ma
->
next
)
{
if
(
group_type
!=
IPV6_ADDR_ANY
&&
ipv6_addr_cmp
(
group
,
&
ma
->
mca_addr
)
!=
0
)
!
ipv6_addr_equal
(
group
,
&
ma
->
mca_addr
)
)
continue
;
spin_lock_bh
(
&
ma
->
mca_lock
);
if
(
ma
->
mca_flags
&
MAF_TIMER_RUNNING
)
{
...
...
@@ -1200,7 +1199,7 @@ int igmp6_event_report(struct sk_buff *skb)
read_lock_bh
(
&
idev
->
lock
);
for
(
ma
=
idev
->
mc_list
;
ma
;
ma
=
ma
->
next
)
{
if
(
ipv6_addr_
cmp
(
&
ma
->
mca_addr
,
addrp
)
==
0
)
{
if
(
ipv6_addr_
equal
(
&
ma
->
mca_addr
,
addrp
)
)
{
spin_lock
(
&
ma
->
mca_lock
);
if
(
del_timer
(
&
ma
->
mca_timer
))
atomic_dec
(
&
ma
->
mca_refcnt
);
...
...
@@ -1695,7 +1694,7 @@ static int ip6_mc_del1_src(struct ifmcaddr6 *pmc, int sfmode,
psf_prev
=
NULL
;
for
(
psf
=
pmc
->
mca_sources
;
psf
;
psf
=
psf
->
sf_next
)
{
if
(
ipv6_addr_
cmp
(
&
psf
->
sf_addr
,
psfsrc
)
==
0
)
if
(
ipv6_addr_
equal
(
&
psf
->
sf_addr
,
psfsrc
)
)
break
;
psf_prev
=
psf
;
}
...
...
@@ -1735,7 +1734,7 @@ int ip6_mc_del_src(struct inet6_dev *idev, struct in6_addr *pmca, int sfmode,
return
-
ENODEV
;
read_lock_bh
(
&
idev
->
lock
);
for
(
pmc
=
idev
->
mc_list
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
ipv6_addr_
cmp
(
pmca
,
&
pmc
->
mca_addr
)
==
0
)
if
(
ipv6_addr_
equal
(
pmca
,
&
pmc
->
mca_addr
)
)
break
;
}
if
(
!
pmc
)
{
...
...
@@ -1790,7 +1789,7 @@ static int ip6_mc_add1_src(struct ifmcaddr6 *pmc, int sfmode,
psf_prev
=
NULL
;
for
(
psf
=
pmc
->
mca_sources
;
psf
;
psf
=
psf
->
sf_next
)
{
if
(
ipv6_addr_
cmp
(
&
psf
->
sf_addr
,
psfsrc
)
==
0
)
if
(
ipv6_addr_
equal
(
&
psf
->
sf_addr
,
psfsrc
)
)
break
;
psf_prev
=
psf
;
}
...
...
@@ -1859,7 +1858,7 @@ int ip6_mc_add_src(struct inet6_dev *idev, struct in6_addr *pmca, int sfmode,
return
-
ENODEV
;
read_lock_bh
(
&
idev
->
lock
);
for
(
pmc
=
idev
->
mc_list
;
pmc
;
pmc
=
pmc
->
next
)
{
if
(
ipv6_addr_
cmp
(
pmca
,
&
pmc
->
mca_addr
)
==
0
)
if
(
ipv6_addr_
equal
(
pmca
,
&
pmc
->
mca_addr
)
)
break
;
}
if
(
!
pmc
)
{
...
...
net/ipv6/ndisc.c
View file @
aa5743cc
...
...
@@ -1219,7 +1219,7 @@ static void ndisc_redirect_rcv(struct sk_buff *skb)
return
;
}
if
(
ipv6_addr_
cmp
(
dest
,
target
)
==
0
)
{
if
(
ipv6_addr_
equal
(
dest
,
target
)
)
{
on_link
=
1
;
}
else
if
(
!
(
ipv6_addr_type
(
target
)
&
IPV6_ADDR_LINKLOCAL
))
{
ND_PRINTK2
(
KERN_WARNING
...
...
net/ipv6/netfilter/ip6_queue.c
View file @
aa5743cc
...
...
@@ -376,8 +376,8 @@ ipq_mangle_ipv6(ipq_verdict_msg_t *v, struct ipq_queue_entry *e)
*/
if
(
e
->
info
->
hook
==
NF_IP_LOCAL_OUT
)
{
struct
ipv6hdr
*
iph
=
e
->
skb
->
nh
.
ipv6h
;
if
(
ipv6_addr_cmp
(
&
iph
->
daddr
,
&
e
->
rt_info
.
daddr
)
||
ipv6_addr_cmp
(
&
iph
->
saddr
,
&
e
->
rt_info
.
saddr
))
if
(
!
ipv6_addr_equal
(
&
iph
->
daddr
,
&
e
->
rt_info
.
daddr
)
||
!
ipv6_addr_equal
(
&
iph
->
saddr
,
&
e
->
rt_info
.
saddr
))
return
ip6_route_me_harder
(
e
->
skb
);
}
return
0
;
...
...
net/ipv6/netfilter/ip6t_rt.c
View file @
aa5743cc
...
...
@@ -209,7 +209,7 @@ match(const struct sk_buff *skb,
BUG_ON
(
ap
==
NULL
);
if
(
!
ipv6_addr_cmp
(
ap
,
&
rtinfo
->
addrs
[
i
]))
{
if
(
ipv6_addr_equal
(
ap
,
&
rtinfo
->
addrs
[
i
]))
{
DEBUGP
(
"i=%d temp=%d;
\n
"
,
i
,
temp
);
i
++
;
}
...
...
@@ -236,7 +236,7 @@ match(const struct sk_buff *skb,
&
_addr
);
BUG_ON
(
ap
==
NULL
);
if
(
ipv6_addr_cmp
(
ap
,
&
rtinfo
->
addrs
[
temp
]))
if
(
!
ipv6_addr_equal
(
ap
,
&
rtinfo
->
addrs
[
temp
]))
break
;
}
DEBUGP
(
"temp=%d #%d
\n
"
,
temp
,
rtinfo
->
addrnr
);
...
...
net/ipv6/raw.c
View file @
aa5743cc
...
...
@@ -90,11 +90,11 @@ struct sock *__raw_v6_lookup(struct sock *sk, unsigned short num,
struct
ipv6_pinfo
*
np
=
inet6_sk
(
sk
);
if
(
!
ipv6_addr_any
(
&
np
->
daddr
)
&&
ipv6_addr_cmp
(
&
np
->
daddr
,
rmt_addr
))
!
ipv6_addr_equal
(
&
np
->
daddr
,
rmt_addr
))
continue
;
if
(
!
ipv6_addr_any
(
&
np
->
rcv_saddr
))
{
if
(
!
ipv6_addr_cmp
(
&
np
->
rcv_saddr
,
loc_addr
))
if
(
ipv6_addr_equal
(
&
np
->
rcv_saddr
,
loc_addr
))
goto
found
;
if
(
is_multicast
&&
inet6_mc_check
(
sk
,
loc_addr
,
rmt_addr
))
...
...
@@ -668,7 +668,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
* sk->sk_dst_cache.
*/
if
(
sk
->
sk_state
==
TCP_ESTABLISHED
&&
!
ipv6_addr_cmp
(
daddr
,
&
np
->
daddr
))
ipv6_addr_equal
(
daddr
,
&
np
->
daddr
))
daddr
=
&
np
->
daddr
;
if
(
addr_len
>=
sizeof
(
struct
sockaddr_in6
)
&&
...
...
@@ -775,7 +775,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
}
done:
ip6_dst_store
(
sk
,
dst
,
!
ipv6_addr_cmp
(
&
fl
.
fl6_dst
,
&
np
->
daddr
)
?
ipv6_addr_equal
(
&
fl
.
fl6_dst
,
&
np
->
daddr
)
?
&
np
->
daddr
:
NULL
);
if
(
err
>
0
)
err
=
np
->
recverr
?
net_xmit_errno
(
err
)
:
0
;
...
...
net/ipv6/reassembly.c
View file @
aa5743cc
...
...
@@ -342,8 +342,8 @@ static struct frag_queue *ip6_frag_intern(unsigned int hash,
#ifdef CONFIG_SMP
for
(
fq
=
ip6_frag_hash
[
hash
];
fq
;
fq
=
fq
->
next
)
{
if
(
fq
->
id
==
fq_in
->
id
&&
!
ipv6_addr_cmp
(
&
fq_in
->
saddr
,
&
fq
->
saddr
)
&&
!
ipv6_addr_cmp
(
&
fq_in
->
daddr
,
&
fq
->
daddr
))
{
ipv6_addr_equal
(
&
fq_in
->
saddr
,
&
fq
->
saddr
)
&&
ipv6_addr_equal
(
&
fq_in
->
daddr
,
&
fq
->
daddr
))
{
atomic_inc
(
&
fq
->
refcnt
);
write_unlock
(
&
ip6_frag_lock
);
fq_in
->
last_in
|=
COMPLETE
;
...
...
@@ -406,8 +406,8 @@ fq_find(u32 id, struct in6_addr *src, struct in6_addr *dst)
read_lock
(
&
ip6_frag_lock
);
for
(
fq
=
ip6_frag_hash
[
hash
];
fq
;
fq
=
fq
->
next
)
{
if
(
fq
->
id
==
id
&&
!
ipv6_addr_cmp
(
src
,
&
fq
->
saddr
)
&&
!
ipv6_addr_cmp
(
dst
,
&
fq
->
daddr
))
{
ipv6_addr_equal
(
src
,
&
fq
->
saddr
)
&&
ipv6_addr_equal
(
dst
,
&
fq
->
daddr
))
{
atomic_inc
(
&
fq
->
refcnt
);
read_unlock
(
&
ip6_frag_lock
);
return
fq
;
...
...
net/ipv6/route.c
View file @
aa5743cc
...
...
@@ -1006,7 +1006,7 @@ static int ip6_route_del(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh, void *_r
rt
->
rt6i_dev
->
ifindex
!=
rtmsg
->
rtmsg_ifindex
))
continue
;
if
(
rtmsg
->
rtmsg_flags
&
RTF_GATEWAY
&&
ipv6_addr_cmp
(
&
rtmsg
->
rtmsg_gateway
,
&
rt
->
rt6i_gateway
))
!
ipv6_addr_equal
(
&
rtmsg
->
rtmsg_gateway
,
&
rt
->
rt6i_gateway
))
continue
;
if
(
rtmsg
->
rtmsg_metric
&&
rtmsg
->
rtmsg_metric
!=
rt
->
rt6i_metric
)
...
...
@@ -1057,13 +1057,13 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr,
* is a bit fuzzy and one might need to check all default
* routers.
*/
if
(
ipv6_addr_cmp
(
saddr
,
&
rt
->
rt6i_gateway
))
{
if
(
!
ipv6_addr_equal
(
saddr
,
&
rt
->
rt6i_gateway
))
{
if
(
rt
->
rt6i_flags
&
RTF_DEFAULT
)
{
struct
rt6_info
*
rt1
;
read_lock
(
&
rt6_lock
);
for
(
rt1
=
ip6_routing_table
.
leaf
;
rt1
;
rt1
=
rt1
->
u
.
next
)
{
if
(
!
ipv6_addr_cmp
(
saddr
,
&
rt1
->
rt6i_gateway
))
{
if
(
ipv6_addr_equal
(
saddr
,
&
rt1
->
rt6i_gateway
))
{
dst_hold
(
&
rt1
->
u
.
dst
);
dst_release
(
&
rt
->
u
.
dst
);
read_unlock
(
&
rt6_lock
);
...
...
@@ -1262,7 +1262,7 @@ struct rt6_info *rt6_get_dflt_router(struct in6_addr *addr, struct net_device *d
write_lock_bh
(
&
rt6_lock
);
for
(
rt
=
fn
->
leaf
;
rt
;
rt
=
rt
->
u
.
next
)
{
if
(
dev
==
rt
->
rt6i_dev
&&
ipv6_addr_
cmp
(
&
rt
->
rt6i_gateway
,
addr
)
==
0
)
ipv6_addr_
equal
(
&
rt
->
rt6i_gateway
,
addr
)
)
break
;
}
if
(
rt
)
...
...
net/ipv6/tcp_ipv6.c
View file @
aa5743cc
...
...
@@ -262,7 +262,7 @@ static struct sock *tcp_v6_lookup_listener(struct in6_addr *daddr, unsigned shor
score
=
1
;
if
(
!
ipv6_addr_any
(
&
np
->
rcv_saddr
))
{
if
(
ipv6_addr_cmp
(
&
np
->
rcv_saddr
,
daddr
))
if
(
!
ipv6_addr_equal
(
&
np
->
rcv_saddr
,
daddr
))
continue
;
score
++
;
}
...
...
@@ -321,8 +321,8 @@ static inline struct sock *__tcp_v6_lookup_established(struct in6_addr *saddr, u
if
(
*
((
__u32
*
)
&
(
tw
->
tw_dport
))
==
ports
&&
sk
->
sk_family
==
PF_INET6
)
{
if
(
!
ipv6_addr_cmp
(
&
tw
->
tw_v6_daddr
,
saddr
)
&&
!
ipv6_addr_cmp
(
&
tw
->
tw_v6_rcv_saddr
,
daddr
)
&&
if
(
ipv6_addr_equal
(
&
tw
->
tw_v6_daddr
,
saddr
)
&&
ipv6_addr_equal
(
&
tw
->
tw_v6_rcv_saddr
,
daddr
)
&&
(
!
sk
->
sk_bound_dev_if
||
sk
->
sk_bound_dev_if
==
dif
))
goto
hit
;
}
...
...
@@ -406,8 +406,8 @@ static struct open_request *tcp_v6_search_req(struct tcp_opt *tp,
prev
=
&
req
->
dl_next
)
{
if
(
req
->
rmt_port
==
rport
&&
req
->
class
->
family
==
AF_INET6
&&
!
ipv6_addr_cmp
(
&
req
->
af
.
v6_req
.
rmt_addr
,
raddr
)
&&
!
ipv6_addr_cmp
(
&
req
->
af
.
v6_req
.
loc_addr
,
laddr
)
&&
ipv6_addr_equal
(
&
req
->
af
.
v6_req
.
rmt_addr
,
raddr
)
&&
ipv6_addr_equal
(
&
req
->
af
.
v6_req
.
loc_addr
,
laddr
)
&&
(
!
req
->
af
.
v6_req
.
iif
||
req
->
af
.
v6_req
.
iif
==
iif
))
{
BUG_TRAP
(
req
->
sk
==
NULL
);
*
prevp
=
prev
;
...
...
@@ -463,8 +463,8 @@ static int tcp_v6_check_established(struct sock *sk)
if
(
*
((
__u32
*
)
&
(
tw
->
tw_dport
))
==
ports
&&
sk2
->
sk_family
==
PF_INET6
&&
!
ipv6_addr_cmp
(
&
tw
->
tw_v6_daddr
,
saddr
)
&&
!
ipv6_addr_cmp
(
&
tw
->
tw_v6_rcv_saddr
,
daddr
)
&&
ipv6_addr_equal
(
&
tw
->
tw_v6_daddr
,
saddr
)
&&
ipv6_addr_equal
(
&
tw
->
tw_v6_rcv_saddr
,
daddr
)
&&
sk2
->
sk_bound_dev_if
==
sk
->
sk_bound_dev_if
)
{
struct
tcp_opt
*
tp
=
tcp_sk
(
sk
);
...
...
@@ -610,7 +610,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
}
if
(
tp
->
ts_recent_stamp
&&
ipv6_addr_cmp
(
&
np
->
daddr
,
&
usin
->
sin6_addr
))
{
!
ipv6_addr_equal
(
&
np
->
daddr
,
&
usin
->
sin6_addr
))
{
tp
->
ts_recent
=
0
;
tp
->
ts_recent_stamp
=
0
;
tp
->
write_seq
=
0
;
...
...
net/ipv6/udp.c
View file @
aa5743cc
...
...
@@ -171,12 +171,12 @@ static struct sock *udp_v6_lookup(struct in6_addr *saddr, u16 sport,
score
++
;
}
if
(
!
ipv6_addr_any
(
&
np
->
rcv_saddr
))
{
if
(
ipv6_addr_cmp
(
&
np
->
rcv_saddr
,
daddr
))
if
(
!
ipv6_addr_equal
(
&
np
->
rcv_saddr
,
daddr
))
continue
;
score
++
;
}
if
(
!
ipv6_addr_any
(
&
np
->
daddr
))
{
if
(
ipv6_addr_cmp
(
&
np
->
daddr
,
saddr
))
if
(
!
ipv6_addr_equal
(
&
np
->
daddr
,
saddr
))
continue
;
score
++
;
}
...
...
@@ -395,14 +395,14 @@ static struct sock *udp_v6_mcast_next(struct sock *sk,
continue
;
}
if
(
!
ipv6_addr_any
(
&
np
->
daddr
)
&&
ipv6_addr_cmp
(
&
np
->
daddr
,
rmt_addr
))
!
ipv6_addr_equal
(
&
np
->
daddr
,
rmt_addr
))
continue
;
if
(
s
->
sk_bound_dev_if
&&
s
->
sk_bound_dev_if
!=
dif
)
continue
;
if
(
!
ipv6_addr_any
(
&
np
->
rcv_saddr
))
{
if
(
!
ipv6_addr_cmp
(
&
np
->
rcv_saddr
,
loc_addr
))
if
(
ipv6_addr_equal
(
&
np
->
rcv_saddr
,
loc_addr
))
return
s
;
continue
;
}
...
...
@@ -732,7 +732,7 @@ static int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk,
* sk->sk_dst_cache.
*/
if
(
sk
->
sk_state
==
TCP_ESTABLISHED
&&
!
ipv6_addr_cmp
(
daddr
,
&
np
->
daddr
))
ipv6_addr_equal
(
daddr
,
&
np
->
daddr
))
daddr
=
&
np
->
daddr
;
if
(
addr_len
>=
sizeof
(
struct
sockaddr_in6
)
&&
...
...
@@ -840,7 +840,7 @@ static int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk,
if
(
dst
)
ip6_dst_store
(
sk
,
dst
,
!
ipv6_addr_cmp
(
&
fl
->
fl6_dst
,
&
np
->
daddr
)
?
ipv6_addr_equal
(
&
fl
->
fl6_dst
,
&
np
->
daddr
)
?
&
np
->
daddr
:
NULL
);
if
(
err
>
0
)
err
=
np
->
recverr
?
net_xmit_errno
(
err
)
:
0
;
...
...
net/ipv6/xfrm6_policy.c
View file @
aa5743cc
...
...
@@ -68,8 +68,8 @@ __xfrm6_find_bundle(struct flowi *fl, struct xfrm_policy *policy)
ipv6_addr_prefix
(
&
fl_src_prefix
,
&
fl
->
fl6_src
,
xdst
->
u
.
rt6
.
rt6i_src
.
plen
);
if
(
!
ipv6_addr_cmp
(
&
xdst
->
u
.
rt6
.
rt6i_dst
.
addr
,
&
fl_dst_prefix
)
&&
!
ipv6_addr_cmp
(
&
xdst
->
u
.
rt6
.
rt6i_src
.
addr
,
&
fl_src_prefix
)
&&
if
(
ipv6_addr_equal
(
&
xdst
->
u
.
rt6
.
rt6i_dst
.
addr
,
&
fl_dst_prefix
)
&&
ipv6_addr_equal
(
&
xdst
->
u
.
rt6
.
rt6i_src
.
addr
,
&
fl_src_prefix
)
&&
__xfrm6_bundle_ok
(
xdst
,
fl
))
{
dst_clone
(
dst
);
break
;
...
...
@@ -123,7 +123,7 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int
trailer_len
+=
xfrm
[
i
]
->
props
.
trailer_len
;
}
if
(
ipv6_addr_cmp
(
remote
,
&
fl
->
fl6_dst
))
{
if
(
!
ipv6_addr_equal
(
remote
,
&
fl
->
fl6_dst
))
{
struct
flowi
fl_tunnel
;
memset
(
&
fl_tunnel
,
0
,
sizeof
(
fl_tunnel
));
...
...
net/ipv6/xfrm6_state.c
View file @
aa5743cc
...
...
@@ -55,7 +55,7 @@ __xfrm6_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto)
list_for_each_entry
(
x
,
xfrm6_state_afinfo
.
state_byspi
+
h
,
byspi
)
{
if
(
x
->
props
.
family
==
AF_INET6
&&
spi
==
x
->
id
.
spi
&&
!
ipv6_addr_cmp
((
struct
in6_addr
*
)
daddr
,
(
struct
in6_addr
*
)
x
->
id
.
daddr
.
a6
)
&&
ipv6_addr_equal
((
struct
in6_addr
*
)
daddr
,
(
struct
in6_addr
*
)
x
->
id
.
daddr
.
a6
)
&&
proto
==
x
->
id
.
proto
)
{
xfrm_state_hold
(
x
);
return
x
;
...
...
@@ -76,10 +76,10 @@ __xfrm6_find_acq(u8 mode, u32 reqid, u8 proto,
list_for_each_entry
(
x
,
xfrm6_state_afinfo
.
state_bydst
+
h
,
bydst
)
{
if
(
x
->
props
.
family
==
AF_INET6
&&
!
ipv6_addr_cmp
((
struct
in6_addr
*
)
daddr
,
(
struct
in6_addr
*
)
x
->
id
.
daddr
.
a6
)
&&
ipv6_addr_equal
((
struct
in6_addr
*
)
daddr
,
(
struct
in6_addr
*
)
x
->
id
.
daddr
.
a6
)
&&
mode
==
x
->
props
.
mode
&&
proto
==
x
->
id
.
proto
&&
!
ipv6_addr_cmp
((
struct
in6_addr
*
)
saddr
,
(
struct
in6_addr
*
)
x
->
props
.
saddr
.
a6
)
&&
ipv6_addr_equal
((
struct
in6_addr
*
)
saddr
,
(
struct
in6_addr
*
)
x
->
props
.
saddr
.
a6
)
&&
reqid
==
x
->
props
.
reqid
&&
x
->
km
.
state
==
XFRM_STATE_ACQ
&&
!
x
->
id
.
spi
)
{
...
...
net/sctp/ipv6.c
View file @
aa5743cc
...
...
@@ -461,7 +461,7 @@ static int sctp_v6_cmp_addr(const union sctp_addr *addr1,
}
return
0
;
}
if
(
ipv6_addr_cmp
(
&
addr1
->
v6
.
sin6_addr
,
&
addr2
->
v6
.
sin6_addr
))
if
(
!
ipv6_addr_equal
(
&
addr1
->
v6
.
sin6_addr
,
&
addr2
->
v6
.
sin6_addr
))
return
0
;
/* If this is a linklocal address, compare the scope_id. */
if
(
ipv6_addr_type
(
&
addr1
->
v6
.
sin6_addr
)
&
IPV6_ADDR_LINKLOCAL
)
{
...
...
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