projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
openflow: Add enum ofp_version
[openvswitch]
/
lib
/
dpif-netdev.c
diff --git
a/lib/dpif-netdev.c
b/lib/dpif-netdev.c
index fb0a863e3e3378177f6ad2b892d274faf7260945..60fae5fad5b32247ba5689f10e0c7c12e3292892 100644
(file)
--- a/
lib/dpif-netdev.c
+++ b/
lib/dpif-netdev.c
@@
-407,7
+407,16
@@
dpif_netdev_port_add(struct dpif *dpif, struct netdev *netdev,
struct dp_netdev *dp = get_dp_netdev(dpif);
int port_no;
struct dp_netdev *dp = get_dp_netdev(dpif);
int port_no;
- port_no = choose_port(dpif, netdev);
+ if (*port_nop != UINT16_MAX) {
+ if (*port_nop >= MAX_PORTS) {
+ return EFBIG;
+ } else if (dp->ports[*port_nop]) {
+ return EBUSY;
+ }
+ port_no = *port_nop;
+ } else {
+ port_no = choose_port(dpif, netdev);
+ }
if (port_no >= 0) {
*port_nop = port_no;
return do_add_port(dp, netdev_get_name(netdev),
if (port_no >= 0) {
*port_nop = port_no;
return do_add_port(dp, netdev_get_name(netdev),
@@
-713,10
+722,9
@@
set_flow_actions(struct dp_netdev_flow *flow,
}
static int
}
static int
-
add_flow(struct dpif *dpif
, const struct flow *key,
- const struct nlattr *actions, size_t actions_len)
+
dp_netdev_flow_add(struct dp_netdev *dp
, const struct flow *key,
+
const struct nlattr *actions, size_t actions_len)
{
{
- struct dp_netdev *dp = get_dp_netdev(dpif);
struct dp_netdev_flow *flow;
int error;
struct dp_netdev_flow *flow;
int error;
@@
-762,7
+770,8
@@
dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put)
if (put->stats) {
memset(put->stats, 0, sizeof *put->stats);
}
if (put->stats) {
memset(put->stats, 0, sizeof *put->stats);
}
- return add_flow(dpif, &key, put->actions, put->actions_len);
+ return dp_netdev_flow_add(dp, &key, put->actions,
+ put->actions_len);
} else {
return EFBIG;
}
} else {
return EFBIG;
}
@@
-956,7
+965,7
@@
dpif_netdev_recv(struct dpif *dpif, struct dpif_upcall *upcall,
free(u);
ofpbuf_uninit(buf);
free(u);
ofpbuf_uninit(buf);
- *buf = *u->packet;
+ *buf = *u
pcall
->packet;
return 0;
} else {
return 0;
} else {