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
245f9eba
Commit
245f9eba
authored
Feb 08, 2005
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
76dd2a8f
fcf28f99
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
91 additions
and
108 deletions
+91
-108
drivers/net/tg3.c
drivers/net/tg3.c
+10
-22
net/core/dev.c
net/core/dev.c
+2
-2
net/ipv4/ipconfig.c
net/ipv4/ipconfig.c
+5
-6
net/ipv4/ipvs/ip_vs_sync.c
net/ipv4/ipvs/ip_vs_sync.c
+5
-9
net/ipv4/tcp_input.c
net/ipv4/tcp_input.c
+1
-2
net/sched/cls_u32.c
net/sched/cls_u32.c
+5
-0
net/xfrm/Makefile
net/xfrm/Makefile
+1
-2
net/xfrm/xfrm_algo.c
net/xfrm/xfrm_algo.c
+12
-0
net/xfrm/xfrm_export.c
net/xfrm/xfrm_export.c
+0
-62
net/xfrm/xfrm_input.c
net/xfrm/xfrm_input.c
+4
-0
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_policy.c
+19
-1
net/xfrm/xfrm_state.c
net/xfrm/xfrm_state.c
+27
-2
No files found.
drivers/net/tg3.c
View file @
245f9eba
...
...
@@ -60,8 +60,8 @@
#define DRV_MODULE_NAME "tg3"
#define PFX DRV_MODULE_NAME ": "
#define DRV_MODULE_VERSION "3.2
0
"
#define DRV_MODULE_RELDATE "February
2
, 2005"
#define DRV_MODULE_VERSION "3.2
1
"
#define DRV_MODULE_RELDATE "February
8
, 2005"
#define TG3_DEF_MAC_MODE 0
#define TG3_DEF_RX_MODE 0
...
...
@@ -893,7 +893,7 @@ static void tg3_frob_aux_power(struct tg3 *tp)
GRC_LCLCTRL_GPIO_OUTPUT1
));
udelay
(
100
);
}
else
{
int
no_gpio2
;
u32
no_gpio2
;
u32
grc_local_ctrl
;
if
(
tp_peer
!=
tp
&&
...
...
@@ -901,8 +901,8 @@ static void tg3_frob_aux_power(struct tg3 *tp)
return
;
/* On 5753 and variants, GPIO2 cannot be used. */
no_gpio2
=
(
tp
->
nic_sram_data_cfg
&
NIC_SRAM_DATA_CFG_NO_GPIO2
)
!=
0
;
no_gpio2
=
tp
->
nic_sram_data_cfg
&
NIC_SRAM_DATA_CFG_NO_GPIO2
;
grc_local_ctrl
=
GRC_LCLCTRL_GPIO_OE0
|
GRC_LCLCTRL_GPIO_OE1
|
...
...
@@ -914,29 +914,17 @@ static void tg3_frob_aux_power(struct tg3 *tp)
GRC_LCLCTRL_GPIO_OUTPUT2
);
}
tw32_f
(
GRC_LOCAL_CTRL
,
tp
->
grc_local_ctrl
|
grc_local_ctrl
);
grc_local_ctrl
);
udelay
(
100
);
grc_local_ctrl
=
GRC_LCLCTRL_GPIO_OE0
|
GRC_LCLCTRL_GPIO_OE1
|
GRC_LCLCTRL_GPIO_OE2
|
GRC_LCLCTRL_GPIO_OUTPUT0
|
GRC_LCLCTRL_GPIO_OUTPUT1
|
GRC_LCLCTRL_GPIO_OUTPUT2
;
if
(
no_gpio2
)
{
grc_local_ctrl
&=
~
(
GRC_LCLCTRL_GPIO_OE2
|
GRC_LCLCTRL_GPIO_OUTPUT2
);
}
grc_local_ctrl
|=
GRC_LCLCTRL_GPIO_OUTPUT0
;
tw32_f
(
GRC_LOCAL_CTRL
,
tp
->
grc_local_ctrl
|
grc_local_ctrl
);
grc_local_ctrl
);
udelay
(
100
);
grc_local_ctrl
=
GRC_LCLCTRL_GPIO_OE0
|
GRC_LCLCTRL_GPIO_OE1
|
GRC_LCLCTRL_GPIO_OE2
|
GRC_LCLCTRL_GPIO_OUTPUT0
|
GRC_LCLCTRL_GPIO_OUTPUT1
;
if
(
!
no_gpio2
)
{
grc_local_ctrl
&=
~
GRC_LCLCTRL_GPIO_OUTPUT2
;
tw32_f
(
GRC_LOCAL_CTRL
,
tp
->
grc_local_ctrl
|
grc_local_ctrl
);
udelay
(
100
);
...
...
net/core/dev.c
View file @
245f9eba
...
...
@@ -108,6 +108,7 @@
#include <linux/kallsyms.h>
#include <linux/netpoll.h>
#include <linux/rcupdate.h>
#include <linux/delay.h>
#ifdef CONFIG_NET_RADIO
#include <linux/wireless.h>
/* Note : will define WIRELESS_EXT */
#include <net/iw_handler.h>
...
...
@@ -2899,8 +2900,7 @@ static void netdev_wait_allrefs(struct net_device *dev)
rebroadcast_time
=
jiffies
;
}
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule_timeout
(
HZ
/
4
);
msleep
(
250
);
if
(
time_after
(
jiffies
,
warning_time
+
10
*
HZ
))
{
printk
(
KERN_EMERG
"unregister_netdevice: "
...
...
net/ipv4/ipconfig.c
View file @
245f9eba
...
...
@@ -53,6 +53,7 @@
#include <linux/seq_file.h>
#include <linux/major.h>
#include <linux/root_dev.h>
#include <linux/delay.h>
#include <net/arp.h>
#include <net/ip.h>
#include <net/ipconfig.h>
...
...
@@ -84,8 +85,8 @@
#endif
/* Define the friendly delay before and after opening net devices */
#define CONF_PRE_OPEN
(HZ/2)
/* Before opening: 1/2 second */
#define CONF_POST_OPEN
(1*HZ)
/* After opening: 1 second */
#define CONF_PRE_OPEN
500
/* Before opening: 1/2 second */
#define CONF_POST_OPEN
1
/* After opening: 1 second */
/* Define the timeout for waiting for a DHCP/BOOTP/RARP reply */
#define CONF_OPEN_RETRIES 2
/* (Re)open devices twice */
...
...
@@ -1259,16 +1260,14 @@ static int __init ip_auto_config(void)
try_try_again:
#endif
/* Give hardware a chance to settle */
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
CONF_PRE_OPEN
);
msleep
(
CONF_PRE_OPEN
);
/* Setup all network devices */
if
(
ic_open_devs
()
<
0
)
return
-
1
;
/* Give drivers a chance to settle */
set_current_state
(
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
CONF_POST_OPEN
);
ssleep
(
CONF_POST_OPEN
);
/*
* If the config information is insufficient (e.g., our IP address or
...
...
net/ipv4/ipvs/ip_vs_sync.c
View file @
245f9eba
...
...
@@ -23,7 +23,7 @@
#include <linux/slab.h>
#include <linux/net.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/skbuff.h>
#include <linux/in.h>
#include <linux/igmp.h>
/* for ip_mc_join_group */
...
...
@@ -647,8 +647,7 @@ static void sync_master_loop(void)
if
(
stop_master_sync
)
break
;
__set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
);
ssleep
(
1
);
}
/* clean up the sync_buff queue */
...
...
@@ -705,8 +704,7 @@ static void sync_backup_loop(void)
if
(
stop_backup_sync
)
break
;
__set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
);
ssleep
(
1
);
}
/* release the sending multicast socket */
...
...
@@ -818,8 +816,7 @@ static int fork_sync_thread(void *startup)
if
((
pid
=
kernel_thread
(
sync_thread
,
startup
,
0
))
<
0
)
{
IP_VS_ERR
(
"could not create sync_thread due to %d... "
"retrying.
\n
"
,
pid
);
current
->
state
=
TASK_UNINTERRUPTIBLE
;
schedule_timeout
(
HZ
);
ssleep
(
1
);
goto
repeat
;
}
...
...
@@ -853,8 +850,7 @@ int start_sync_thread(int state, char *mcast_ifn, __u8 syncid)
if
((
pid
=
kernel_thread
(
fork_sync_thread
,
&
startup
,
0
))
<
0
)
{
IP_VS_ERR
(
"could not create fork_sync_thread due to %d... "
"retrying.
\n
"
,
pid
);
current
->
state
=
TASK_UNINTERRUPTIBLE
;
schedule_timeout
(
HZ
);
ssleep
(
1
);
goto
repeat
;
}
...
...
net/ipv4/tcp_input.c
View file @
245f9eba
...
...
@@ -3760,8 +3760,7 @@ tcp_collapse(struct sock *sk, struct sk_buff *head,
while
(
before
(
start
,
end
))
{
struct
sk_buff
*
nskb
;
int
header
=
skb_headroom
(
skb
);
int
copy
=
(
PAGE_SIZE
-
sizeof
(
struct
sk_buff
)
-
sizeof
(
struct
skb_shared_info
)
-
header
-
31
)
&~
15
;
int
copy
=
SKB_MAX_ORDER
(
header
,
0
);
/* Too big header? This can happen with IPv6. */
if
(
copy
<
0
)
...
...
net/sched/cls_u32.c
View file @
245f9eba
...
...
@@ -91,6 +91,7 @@ struct tc_u_hnode
{
struct
tc_u_hnode
*
next
;
u32
handle
;
u32
prio
;
struct
tc_u_common
*
tp_c
;
int
refcnt
;
unsigned
divisor
;
...
...
@@ -323,6 +324,7 @@ static int u32_init(struct tcf_proto *tp)
root_ht
->
divisor
=
0
;
root_ht
->
refcnt
++
;
root_ht
->
handle
=
tp_c
?
gen_new_htid
(
tp_c
)
:
0x80000000
;
root_ht
->
prio
=
tp
->
prio
;
if
(
tp_c
==
NULL
)
{
tp_c
=
kmalloc
(
sizeof
(
*
tp_c
),
GFP_KERNEL
);
...
...
@@ -587,6 +589,7 @@ static int u32_change(struct tcf_proto *tp, unsigned long base, u32 handle,
ht
->
refcnt
=
0
;
ht
->
divisor
=
divisor
;
ht
->
handle
=
handle
;
ht
->
prio
=
tp
->
prio
;
ht
->
next
=
tp_c
->
hlist
;
tp_c
->
hlist
=
ht
;
*
arg
=
(
unsigned
long
)
ht
;
...
...
@@ -703,6 +706,8 @@ static void u32_walk(struct tcf_proto *tp, struct tcf_walker *arg)
return
;
for
(
ht
=
tp_c
->
hlist
;
ht
;
ht
=
ht
->
next
)
{
if
(
ht
->
prio
!=
tp
->
prio
)
continue
;
if
(
arg
->
count
>=
arg
->
skip
)
{
if
(
arg
->
fn
(
tp
,
(
unsigned
long
)
ht
,
arg
)
<
0
)
{
arg
->
stop
=
1
;
...
...
net/xfrm/Makefile
View file @
245f9eba
...
...
@@ -2,7 +2,6 @@
# Makefile for the XFRM subsystem.
#
obj-$(CONFIG_XFRM)
:=
xfrm_policy.o xfrm_state.o xfrm_input.o xfrm_algo.o
\
xfrm_export.o
obj-$(CONFIG_XFRM)
:=
xfrm_policy.o xfrm_state.o xfrm_input.o xfrm_algo.o
obj-$(CONFIG_XFRM_USER)
+=
xfrm_user.o
net/xfrm/xfrm_algo.c
View file @
245f9eba
...
...
@@ -316,6 +316,7 @@ struct xfrm_algo_desc *xfrm_aalg_get_byid(int alg_id)
}
return
NULL
;
}
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byid
);
struct
xfrm_algo_desc
*
xfrm_ealg_get_byid
(
int
alg_id
)
{
...
...
@@ -331,6 +332,7 @@ struct xfrm_algo_desc *xfrm_ealg_get_byid(int alg_id)
}
return
NULL
;
}
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byid
);
struct
xfrm_algo_desc
*
xfrm_calg_get_byid
(
int
alg_id
)
{
...
...
@@ -346,6 +348,7 @@ struct xfrm_algo_desc *xfrm_calg_get_byid(int alg_id)
}
return
NULL
;
}
EXPORT_SYMBOL_GPL
(
xfrm_calg_get_byid
);
static
struct
xfrm_algo_desc
*
xfrm_get_byname
(
struct
xfrm_algo_desc
*
list
,
int
entries
,
char
*
name
,
...
...
@@ -380,16 +383,19 @@ struct xfrm_algo_desc *xfrm_aalg_get_byname(char *name, int probe)
{
return
xfrm_get_byname
(
aalg_list
,
aalg_entries
(),
name
,
probe
);
}
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byname
);
struct
xfrm_algo_desc
*
xfrm_ealg_get_byname
(
char
*
name
,
int
probe
)
{
return
xfrm_get_byname
(
ealg_list
,
ealg_entries
(),
name
,
probe
);
}
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byname
);
struct
xfrm_algo_desc
*
xfrm_calg_get_byname
(
char
*
name
,
int
probe
)
{
return
xfrm_get_byname
(
calg_list
,
calg_entries
(),
name
,
probe
);
}
EXPORT_SYMBOL_GPL
(
xfrm_calg_get_byname
);
struct
xfrm_algo_desc
*
xfrm_aalg_get_byidx
(
unsigned
int
idx
)
{
...
...
@@ -398,6 +404,7 @@ struct xfrm_algo_desc *xfrm_aalg_get_byidx(unsigned int idx)
return
&
aalg_list
[
idx
];
}
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byidx
);
struct
xfrm_algo_desc
*
xfrm_ealg_get_byidx
(
unsigned
int
idx
)
{
...
...
@@ -406,6 +413,7 @@ struct xfrm_algo_desc *xfrm_ealg_get_byidx(unsigned int idx)
return
&
ealg_list
[
idx
];
}
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byidx
);
/*
* Probe for the availability of crypto algorithms, and set the available
...
...
@@ -438,6 +446,7 @@ void xfrm_probe_algs(void)
}
#endif
}
EXPORT_SYMBOL_GPL
(
xfrm_probe_algs
);
int
xfrm_count_auth_supported
(
void
)
{
...
...
@@ -448,6 +457,7 @@ int xfrm_count_auth_supported(void)
n
++
;
return
n
;
}
EXPORT_SYMBOL_GPL
(
xfrm_count_auth_supported
);
int
xfrm_count_enc_supported
(
void
)
{
...
...
@@ -458,6 +468,7 @@ int xfrm_count_enc_supported(void)
n
++
;
return
n
;
}
EXPORT_SYMBOL_GPL
(
xfrm_count_enc_supported
);
/* Move to common area: it is shared with AH. */
...
...
@@ -532,6 +543,7 @@ void skb_icv_walk(const struct sk_buff *skb, struct crypto_tfm *tfm,
if
(
len
)
BUG
();
}
EXPORT_SYMBOL_GPL
(
skb_icv_walk
);
#if defined(CONFIG_INET_ESP) || defined(CONFIG_INET_ESP_MODULE) || defined(CONFIG_INET6_ESP) || defined(CONFIG_INET6_ESP_MODULE)
...
...
net/xfrm/xfrm_export.c
deleted
100644 → 0
View file @
76dd2a8f
#include <linux/module.h>
#include <net/xfrm.h>
EXPORT_SYMBOL
(
xfrm_user_policy
);
EXPORT_SYMBOL
(
km_waitq
);
EXPORT_SYMBOL
(
km_new_mapping
);
EXPORT_SYMBOL
(
xfrm_cfg_sem
);
EXPORT_SYMBOL
(
xfrm_policy_alloc
);
EXPORT_SYMBOL
(
__xfrm_policy_destroy
);
EXPORT_SYMBOL
(
xfrm_lookup
);
EXPORT_SYMBOL
(
__xfrm_policy_check
);
EXPORT_SYMBOL
(
__xfrm_route_forward
);
EXPORT_SYMBOL
(
xfrm_state_alloc
);
EXPORT_SYMBOL
(
__xfrm_state_destroy
);
EXPORT_SYMBOL
(
xfrm_state_insert
);
EXPORT_SYMBOL
(
xfrm_state_add
);
EXPORT_SYMBOL
(
xfrm_state_update
);
EXPORT_SYMBOL
(
xfrm_state_check_expire
);
EXPORT_SYMBOL
(
xfrm_state_check
);
EXPORT_SYMBOL
(
xfrm_state_lookup
);
EXPORT_SYMBOL
(
xfrm_state_register_afinfo
);
EXPORT_SYMBOL
(
xfrm_state_unregister_afinfo
);
EXPORT_SYMBOL
(
xfrm_state_delete_tunnel
);
EXPORT_SYMBOL
(
xfrm_replay_check
);
EXPORT_SYMBOL
(
xfrm_replay_advance
);
EXPORT_SYMBOL
(
__secpath_destroy
);
EXPORT_SYMBOL
(
secpath_dup
);
EXPORT_SYMBOL
(
xfrm_get_acqseq
);
EXPORT_SYMBOL
(
xfrm_parse_spi
);
EXPORT_SYMBOL
(
xfrm_register_type
);
EXPORT_SYMBOL
(
xfrm_unregister_type
);
EXPORT_SYMBOL
(
xfrm_get_type
);
EXPORT_SYMBOL
(
xfrm_register_km
);
EXPORT_SYMBOL
(
xfrm_unregister_km
);
EXPORT_SYMBOL
(
xfrm_state_delete
);
EXPORT_SYMBOL
(
xfrm_state_walk
);
EXPORT_SYMBOL
(
xfrm_find_acq_byseq
);
EXPORT_SYMBOL
(
xfrm_find_acq
);
EXPORT_SYMBOL
(
xfrm_alloc_spi
);
EXPORT_SYMBOL
(
xfrm_state_flush
);
EXPORT_SYMBOL
(
xfrm_policy_bysel
);
EXPORT_SYMBOL
(
xfrm_policy_insert
);
EXPORT_SYMBOL
(
xfrm_policy_walk
);
EXPORT_SYMBOL
(
xfrm_policy_flush
);
EXPORT_SYMBOL
(
xfrm_policy_byid
);
EXPORT_SYMBOL
(
xfrm_policy_list
);
EXPORT_SYMBOL
(
xfrm_dst_lookup
);
EXPORT_SYMBOL
(
xfrm_policy_register_afinfo
);
EXPORT_SYMBOL
(
xfrm_policy_unregister_afinfo
);
EXPORT_SYMBOL_GPL
(
xfrm_probe_algs
);
EXPORT_SYMBOL_GPL
(
xfrm_count_auth_supported
);
EXPORT_SYMBOL_GPL
(
xfrm_count_enc_supported
);
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byidx
);
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byidx
);
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byid
);
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byid
);
EXPORT_SYMBOL_GPL
(
xfrm_calg_get_byid
);
EXPORT_SYMBOL_GPL
(
xfrm_aalg_get_byname
);
EXPORT_SYMBOL_GPL
(
xfrm_ealg_get_byname
);
EXPORT_SYMBOL_GPL
(
xfrm_calg_get_byname
);
EXPORT_SYMBOL_GPL
(
skb_icv_walk
);
net/xfrm/xfrm_input.c
View file @
245f9eba
...
...
@@ -8,6 +8,7 @@
*/
#include <linux/slab.h>
#include <linux/module.h>
#include <net/ip.h>
#include <net/xfrm.h>
...
...
@@ -20,6 +21,7 @@ void __secpath_destroy(struct sec_path *sp)
xfrm_state_put
(
sp
->
x
[
i
].
xvec
);
kmem_cache_free
(
secpath_cachep
,
sp
);
}
EXPORT_SYMBOL
(
__secpath_destroy
);
struct
sec_path
*
secpath_dup
(
struct
sec_path
*
src
)
{
...
...
@@ -40,6 +42,7 @@ struct sec_path *secpath_dup(struct sec_path *src)
atomic_set
(
&
sp
->
refcnt
,
1
);
return
sp
;
}
EXPORT_SYMBOL
(
secpath_dup
);
/* Fetch spi and seq from ipsec header */
...
...
@@ -73,6 +76,7 @@ int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, u32 *spi, u32 *seq)
*
seq
=
*
(
u32
*
)(
skb
->
h
.
raw
+
offset_seq
);
return
0
;
}
EXPORT_SYMBOL
(
xfrm_parse_spi
);
void
__init
xfrm_input_init
(
void
)
{
...
...
net/xfrm/xfrm_policy.c
View file @
245f9eba
...
...
@@ -21,14 +21,17 @@
#include <linux/workqueue.h>
#include <linux/notifier.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#include <net/xfrm.h>
#include <net/ip.h>
DECLARE_MUTEX
(
xfrm_cfg_sem
);
EXPORT_SYMBOL
(
xfrm_cfg_sem
);
static
DEFINE_RWLOCK
(
xfrm_policy_lock
);
struct
xfrm_policy
*
xfrm_policy_list
[
XFRM_POLICY_MAX
*
2
];
EXPORT_SYMBOL
(
xfrm_policy_list
);
static
DEFINE_RWLOCK
(
xfrm_policy_afinfo_lock
);
static
struct
xfrm_policy_afinfo
*
xfrm_policy_afinfo
[
NPROTO
];
...
...
@@ -62,6 +65,7 @@ int xfrm_register_type(struct xfrm_type *type, unsigned short family)
xfrm_policy_put_afinfo
(
afinfo
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_register_type
);
int
xfrm_unregister_type
(
struct
xfrm_type
*
type
,
unsigned
short
family
)
{
...
...
@@ -82,6 +86,7 @@ int xfrm_unregister_type(struct xfrm_type *type, unsigned short family)
xfrm_policy_put_afinfo
(
afinfo
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_unregister_type
);
struct
xfrm_type
*
xfrm_get_type
(
u8
proto
,
unsigned
short
family
)
{
...
...
@@ -112,6 +117,7 @@ struct xfrm_type *xfrm_get_type(u8 proto, unsigned short family)
xfrm_policy_put_afinfo
(
afinfo
);
return
type
;
}
EXPORT_SYMBOL
(
xfrm_get_type
);
int
xfrm_dst_lookup
(
struct
xfrm_dst
**
dst
,
struct
flowi
*
fl
,
unsigned
short
family
)
...
...
@@ -129,6 +135,7 @@ int xfrm_dst_lookup(struct xfrm_dst **dst, struct flowi *fl,
xfrm_policy_put_afinfo
(
afinfo
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_dst_lookup
);
void
xfrm_put_type
(
struct
xfrm_type
*
type
)
{
...
...
@@ -234,6 +241,7 @@ struct xfrm_policy *xfrm_policy_alloc(int gfp)
}
return
policy
;
}
EXPORT_SYMBOL
(
xfrm_policy_alloc
);
/* Destroy xfrm_policy: descendant resources must be released to this moment. */
...
...
@@ -250,6 +258,7 @@ void __xfrm_policy_destroy(struct xfrm_policy *policy)
kfree
(
policy
);
}
EXPORT_SYMBOL
(
__xfrm_policy_destroy
);
static
void
xfrm_policy_gc_kill
(
struct
xfrm_policy
*
policy
)
{
...
...
@@ -373,6 +382,7 @@ int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl)
}
return
0
;
}
EXPORT_SYMBOL
(
xfrm_policy_insert
);
struct
xfrm_policy
*
xfrm_policy_bysel
(
int
dir
,
struct
xfrm_selector
*
sel
,
int
delete
)
...
...
@@ -396,6 +406,7 @@ struct xfrm_policy *xfrm_policy_bysel(int dir, struct xfrm_selector *sel,
}
return
pol
;
}
EXPORT_SYMBOL
(
xfrm_policy_bysel
);
struct
xfrm_policy
*
xfrm_policy_byid
(
int
dir
,
u32
id
,
int
delete
)
{
...
...
@@ -418,6 +429,7 @@ struct xfrm_policy *xfrm_policy_byid(int dir, u32 id, int delete)
}
return
pol
;
}
EXPORT_SYMBOL
(
xfrm_policy_byid
);
void
xfrm_policy_flush
(
void
)
{
...
...
@@ -438,6 +450,7 @@ void xfrm_policy_flush(void)
atomic_inc
(
&
flow_cache_genid
);
write_unlock_bh
(
&
xfrm_policy_lock
);
}
EXPORT_SYMBOL
(
xfrm_policy_flush
);
int
xfrm_policy_walk
(
int
(
*
func
)(
struct
xfrm_policy
*
,
int
,
int
,
void
*
),
void
*
data
)
...
...
@@ -470,7 +483,7 @@ int xfrm_policy_walk(int (*func)(struct xfrm_policy *, int, int, void*),
read_unlock_bh
(
&
xfrm_policy_lock
);
return
error
;
}
EXPORT_SYMBOL
(
xfrm_policy_walk
);
/* Find policy to apply to this flow. */
...
...
@@ -845,6 +858,7 @@ int xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl,
*
dst_p
=
NULL
;
return
err
;
}
EXPORT_SYMBOL
(
xfrm_lookup
);
/* When skb is transformed back to its "native" form, we have to
* check policy restrictions. At the moment we make this in maximally
...
...
@@ -981,6 +995,7 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb,
xfrm_pol_put
(
pol
);
return
0
;
}
EXPORT_SYMBOL
(
__xfrm_policy_check
);
int
__xfrm_route_forward
(
struct
sk_buff
*
skb
,
unsigned
short
family
)
{
...
...
@@ -991,6 +1006,7 @@ int __xfrm_route_forward(struct sk_buff *skb, unsigned short family)
return
xfrm_lookup
(
&
skb
->
dst
,
&
fl
,
NULL
,
0
)
==
0
;
}
EXPORT_SYMBOL
(
__xfrm_route_forward
);
/* Optimize later using cookies and generation ids. */
...
...
@@ -1163,6 +1179,7 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
write_unlock
(
&
xfrm_policy_afinfo_lock
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_policy_register_afinfo
);
int
xfrm_policy_unregister_afinfo
(
struct
xfrm_policy_afinfo
*
afinfo
)
{
...
...
@@ -1190,6 +1207,7 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
write_unlock
(
&
xfrm_policy_afinfo_lock
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_policy_unregister_afinfo
);
static
struct
xfrm_policy_afinfo
*
xfrm_policy_get_afinfo
(
unsigned
short
family
)
{
...
...
net/xfrm/xfrm_state.c
View file @
245f9eba
...
...
@@ -17,6 +17,7 @@
#include <net/xfrm.h>
#include <linux/pfkeyv2.h>
#include <linux/ipsec.h>
#include <linux/module.h>
#include <asm/uaccess.h>
/* Each xfrm_state may be linked to two tables:
...
...
@@ -38,6 +39,7 @@ static struct list_head xfrm_state_bydst[XFRM_DST_HSIZE];
static
struct
list_head
xfrm_state_byspi
[
XFRM_DST_HSIZE
];
DECLARE_WAIT_QUEUE_HEAD
(
km_waitq
);
EXPORT_SYMBOL
(
km_waitq
);
static
DEFINE_RWLOCK
(
xfrm_state_afinfo_lock
);
static
struct
xfrm_state_afinfo
*
xfrm_state_afinfo
[
NPROTO
];
...
...
@@ -193,6 +195,7 @@ struct xfrm_state *xfrm_state_alloc(void)
}
return
x
;
}
EXPORT_SYMBOL
(
xfrm_state_alloc
);
void
__xfrm_state_destroy
(
struct
xfrm_state
*
x
)
{
...
...
@@ -203,6 +206,7 @@ void __xfrm_state_destroy(struct xfrm_state *x)
spin_unlock_bh
(
&
xfrm_state_gc_lock
);
schedule_work
(
&
xfrm_state_gc_work
);
}
EXPORT_SYMBOL
(
__xfrm_state_destroy
);
static
void
__xfrm_state_delete
(
struct
xfrm_state
*
x
)
{
...
...
@@ -241,6 +245,7 @@ void xfrm_state_delete(struct xfrm_state *x)
__xfrm_state_delete
(
x
);
spin_unlock_bh
(
&
x
->
lock
);
}
EXPORT_SYMBOL
(
xfrm_state_delete
);
void
xfrm_state_flush
(
u8
proto
)
{
...
...
@@ -267,6 +272,7 @@ void xfrm_state_flush(u8 proto)
spin_unlock_bh
(
&
xfrm_state_lock
);
wake_up
(
&
km_waitq
);
}
EXPORT_SYMBOL
(
xfrm_state_flush
);
static
int
xfrm_init_tempsel
(
struct
xfrm_state
*
x
,
struct
flowi
*
fl
,
...
...
@@ -392,6 +398,7 @@ void xfrm_state_insert(struct xfrm_state *x)
__xfrm_state_insert
(
x
);
spin_unlock_bh
(
&
xfrm_state_lock
);
}
EXPORT_SYMBOL
(
xfrm_state_insert
);
static
struct
xfrm_state
*
__xfrm_find_acq_byseq
(
u32
seq
);
...
...
@@ -444,6 +451,7 @@ int xfrm_state_add(struct xfrm_state *x)
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_add
);
int
xfrm_state_update
(
struct
xfrm_state
*
x
)
{
...
...
@@ -508,6 +516,7 @@ int xfrm_state_update(struct xfrm_state *x)
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_update
);
int
xfrm_state_check_expire
(
struct
xfrm_state
*
x
)
{
...
...
@@ -531,6 +540,7 @@ int xfrm_state_check_expire(struct xfrm_state *x)
km_state_expired
(
x
,
0
);
return
0
;
}
EXPORT_SYMBOL
(
xfrm_state_check_expire
);
static
int
xfrm_state_check_space
(
struct
xfrm_state
*
x
,
struct
sk_buff
*
skb
)
{
...
...
@@ -553,6 +563,7 @@ int xfrm_state_check(struct xfrm_state *x, struct sk_buff *skb)
err:
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_check
);
struct
xfrm_state
*
xfrm_state_lookup
(
xfrm_address_t
*
daddr
,
u32
spi
,
u8
proto
,
...
...
@@ -569,6 +580,7 @@ xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto,
xfrm_state_put_afinfo
(
afinfo
);
return
x
;
}
EXPORT_SYMBOL
(
xfrm_state_lookup
);
struct
xfrm_state
*
xfrm_find_acq
(
u8
mode
,
u32
reqid
,
u8
proto
,
...
...
@@ -586,6 +598,7 @@ xfrm_find_acq(u8 mode, u32 reqid, u8 proto,
xfrm_state_put_afinfo
(
afinfo
);
return
x
;
}
EXPORT_SYMBOL
(
xfrm_find_acq
);
/* Silly enough, but I'm lazy to build resolution list */
...
...
@@ -614,7 +627,8 @@ struct xfrm_state *xfrm_find_acq_byseq(u32 seq)
spin_unlock_bh
(
&
xfrm_state_lock
);
return
x
;
}
EXPORT_SYMBOL
(
xfrm_find_acq_byseq
);
u32
xfrm_get_acqseq
(
void
)
{
u32
res
;
...
...
@@ -626,6 +640,7 @@ u32 xfrm_get_acqseq(void)
spin_unlock_bh
(
&
acqseq_lock
);
return
res
;
}
EXPORT_SYMBOL
(
xfrm_get_acqseq
);
void
xfrm_alloc_spi
(
struct
xfrm_state
*
x
,
u32
minspi
,
u32
maxspi
)
...
...
@@ -666,6 +681,7 @@ xfrm_alloc_spi(struct xfrm_state *x, u32 minspi, u32 maxspi)
wake_up
(
&
km_waitq
);
}
}
EXPORT_SYMBOL
(
xfrm_alloc_spi
);
int
xfrm_state_walk
(
u8
proto
,
int
(
*
func
)(
struct
xfrm_state
*
,
int
,
void
*
),
void
*
data
)
...
...
@@ -700,7 +716,7 @@ int xfrm_state_walk(u8 proto, int (*func)(struct xfrm_state *, int, void*),
spin_unlock_bh
(
&
xfrm_state_lock
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_walk
);
int
xfrm_replay_check
(
struct
xfrm_state
*
x
,
u32
seq
)
{
...
...
@@ -726,6 +742,7 @@ int xfrm_replay_check(struct xfrm_state *x, u32 seq)
}
return
0
;
}
EXPORT_SYMBOL
(
xfrm_replay_check
);
void
xfrm_replay_advance
(
struct
xfrm_state
*
x
,
u32
seq
)
{
...
...
@@ -745,6 +762,7 @@ void xfrm_replay_advance(struct xfrm_state *x, u32 seq)
x
->
replay
.
bitmap
|=
(
1U
<<
diff
);
}
}
EXPORT_SYMBOL
(
xfrm_replay_advance
);
static
struct
list_head
xfrm_km_list
=
LIST_HEAD_INIT
(
xfrm_km_list
);
static
DEFINE_RWLOCK
(
xfrm_km_lock
);
...
...
@@ -797,6 +815,7 @@ int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, u16 sport)
read_unlock
(
&
xfrm_km_lock
);
return
err
;
}
EXPORT_SYMBOL
(
km_new_mapping
);
void
km_policy_expired
(
struct
xfrm_policy
*
pol
,
int
dir
,
int
hard
)
{
...
...
@@ -850,6 +869,7 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen
kfree
(
data
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_user_policy
);
int
xfrm_register_km
(
struct
xfrm_mgr
*
km
)
{
...
...
@@ -858,6 +878,7 @@ int xfrm_register_km(struct xfrm_mgr *km)
write_unlock_bh
(
&
xfrm_km_lock
);
return
0
;
}
EXPORT_SYMBOL
(
xfrm_register_km
);
int
xfrm_unregister_km
(
struct
xfrm_mgr
*
km
)
{
...
...
@@ -866,6 +887,7 @@ int xfrm_unregister_km(struct xfrm_mgr *km)
write_unlock_bh
(
&
xfrm_km_lock
);
return
0
;
}
EXPORT_SYMBOL
(
xfrm_unregister_km
);
int
xfrm_state_register_afinfo
(
struct
xfrm_state_afinfo
*
afinfo
)
{
...
...
@@ -885,6 +907,7 @@ int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo)
write_unlock
(
&
xfrm_state_afinfo_lock
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_register_afinfo
);
int
xfrm_state_unregister_afinfo
(
struct
xfrm_state_afinfo
*
afinfo
)
{
...
...
@@ -906,6 +929,7 @@ int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo)
write_unlock
(
&
xfrm_state_afinfo_lock
);
return
err
;
}
EXPORT_SYMBOL
(
xfrm_state_unregister_afinfo
);
static
struct
xfrm_state_afinfo
*
xfrm_state_get_afinfo
(
unsigned
short
family
)
{
...
...
@@ -940,6 +964,7 @@ void xfrm_state_delete_tunnel(struct xfrm_state *x)
x
->
tunnel
=
NULL
;
}
}
EXPORT_SYMBOL
(
xfrm_state_delete_tunnel
);
void
__init
xfrm_state_init
(
void
)
{
...
...
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