projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
stream-ssl: Use out_of_memory() to abort due to lack of memory.
[openvswitch]
/
datapath
/
vport-capwap.c
diff --git
a/datapath/vport-capwap.c
b/datapath/vport-capwap.c
index 1c2d41b257f8a8e16152b2bb451b463a5310b9f4..e2cf400b1613a2b8a402cce432fd92cc38332b5b 100644
(file)
--- a/
datapath/vport-capwap.c
+++ b/
datapath/vport-capwap.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2010 Nicira Networks.
+ * Copyright (c) 2010
, 2011
Nicira Networks.
* Distributed under the terms of the GNU GPL version 2.
*
* Significant portions of this file may be copied from parts of the Linux
* Distributed under the terms of the GNU GPL version 2.
*
* Significant portions of this file may be copied from parts of the Linux
@@
-115,14
+115,17
@@
static struct netns_frags frag_netns_state = {
static struct socket *capwap_rcv_socket;
static struct socket *capwap_rcv_socket;
-static int capwap_hdr_len(const struct tnl_
port_config *port_config
)
+static int capwap_hdr_len(const struct tnl_
mutable_config *mutable
)
{
{
- /* CAPWAP has neither checksums nor keys, so reject ports with those. */
- if (port_config->flags & (TNL_F_CSUM | TNL_F_IN_KEY_MATCH |
- TNL_F_OUT_KEY_ACTION))
+ /* CAPWAP has no checksums. */
+ if (mutable->flags & TNL_F_CSUM)
return -EINVAL;
return -EINVAL;
- if (port_config->in_key != 0 || port_config->out_key != 0)
+ /* CAPWAP has no keys, so check that the configuration for keys is the
+ * default if no key-specific attributes are used.
+ */
+ if ((mutable->flags & (TNL_F_IN_KEY_MATCH | TNL_F_OUT_KEY_ACTION)) !=
+ (TNL_F_IN_KEY_MATCH | TNL_F_OUT_KEY_ACTION))
return -EINVAL;
return CAPWAP_HLEN;
return -EINVAL;
return CAPWAP_HLEN;
@@
-203,7
+206,7
@@
static int capwap_rcv(struct sock *sk, struct sk_buff *skb)
goto error;
}
goto error;
}
- tnl_rcv(vport, skb);
+ tnl_rcv(vport, skb
, iph->tos
);
goto out;
error:
goto out;
error:
@@
-220,9
+223,9
@@
static const struct tnl_ops capwap_tnl_ops = {
.update_header = capwap_update_header,
};
.update_header = capwap_update_header,
};
-static struct vport *capwap_create(const
char *name, const void __user *config
)
+static struct vport *capwap_create(const
struct vport_parms *parms
)
{
{
- return tnl_create(
name, config
, &capwap_vport_ops, &capwap_tnl_ops);
+ return tnl_create(
parms
, &capwap_vport_ops, &capwap_tnl_ops);
}
/* Random value. Irrelevant as long as it's not 0 since we set the handler. */
}
/* Random value. Irrelevant as long as it's not 0 since we set the handler. */
@@
-237,7
+240,7
@@
static int capwap_init(void)
goto error;
sin.sin_family = AF_INET;
goto error;
sin.sin_family = AF_INET;
- sin.sin_addr.s_addr =
INADDR_ANY
;
+ sin.sin_addr.s_addr =
htonl(INADDR_ANY)
;
sin.sin_port = htons(CAPWAP_DST_PORT);
err = kernel_bind(capwap_rcv_socket, (struct sockaddr *)&sin,
sin.sin_port = htons(CAPWAP_DST_PORT);
err = kernel_bind(capwap_rcv_socket, (struct sockaddr *)&sin,
@@
-645,21
+648,20
@@
static void capwap_frag_expire(unsigned long ifq)
}
const struct vport_ops capwap_vport_ops = {
}
const struct vport_ops capwap_vport_ops = {
- .type =
"capwap"
,
+ .type =
ODP_VPORT_TYPE_CAPWAP
,
.flags = VPORT_F_GEN_STATS,
.init = capwap_init,
.exit = capwap_exit,
.create = capwap_create,
.flags = VPORT_F_GEN_STATS,
.init = capwap_init,
.exit = capwap_exit,
.create = capwap_create,
- .modify = tnl_modify,
.destroy = tnl_destroy,
.destroy = tnl_destroy,
- .set_mtu = tnl_set_mtu,
.set_addr = tnl_set_addr,
.get_name = tnl_get_name,
.get_addr = tnl_get_addr,
.set_addr = tnl_set_addr,
.get_name = tnl_get_name,
.get_addr = tnl_get_addr,
+ .get_options = tnl_get_options,
+ .set_options = tnl_set_options,
.get_dev_flags = vport_gen_get_dev_flags,
.is_running = vport_gen_is_running,
.get_operstate = vport_gen_get_operstate,
.get_dev_flags = vport_gen_get_dev_flags,
.is_running = vport_gen_is_running,
.get_operstate = vport_gen_get_operstate,
- .get_mtu = tnl_get_mtu,
.send = tnl_send,
};
.send = tnl_send,
};