git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'mainstream'
[sliver-openvswitch.git]
/
lib
/
dpif-netdev.c
diff --git
a/lib/dpif-netdev.c
b/lib/dpif-netdev.c
index
ee60dcd
..
36b6d4a
100644
(file)
--- a/
lib/dpif-netdev.c
+++ b/
lib/dpif-netdev.c
@@
-402,6
+402,8
@@
dpif_netdev_get_stats(const struct dpif *dpif, struct dpif_dp_stats *stats)
stats->n_hit = dp->n_hit;
stats->n_missed = dp->n_missed;
stats->n_lost = dp->n_lost;
stats->n_hit = dp->n_hit;
stats->n_missed = dp->n_missed;
stats->n_lost = dp->n_lost;
+ stats->n_masks = UINT64_MAX;
+ stats->n_mask_hit = UINT64_MAX;
ovs_mutex_unlock(&dp_netdev_mutex);
return 0;
ovs_mutex_unlock(&dp_netdev_mutex);
return 0;
@@
-415,6
+417,7
@@
do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
struct dp_netdev_port *port;
struct netdev *netdev;
struct netdev_rx *rx;
struct dp_netdev_port *port;
struct netdev *netdev;
struct netdev_rx *rx;
+ enum netdev_flags flags;
const char *open_type;
int mtu;
int error;
const char *open_type;
int mtu;
int error;
@@
-427,9
+430,15
@@
do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
if (error) {
return error;
}
if (error) {
return error;
}
- /* XXX reject loopback devices */
/* XXX reject non-Ethernet devices */
/* XXX reject non-Ethernet devices */
+ netdev_get_flags(netdev, &flags);
+ if (flags & NETDEV_LOOPBACK) {
+ VLOG_ERR("%s: cannot add a loopback device", devname);
+ netdev_close(netdev);
+ return EINVAL;
+ }
+
error = netdev_rx_open(netdev, &rx);
if (error
&& !(error == EOPNOTSUPP && dpif_netdev_class_is_dummy(dp->class))) {
error = netdev_rx_open(netdev, &rx);
if (error
&& !(error == EOPNOTSUPP && dpif_netdev_class_is_dummy(dp->class))) {
@@
-1227,10
+1236,11
@@
dpif_netdev_wait(struct dpif *dpif)
}
static void
}
static void
-dp_netdev_output_port(void *dp_, struct ofpbuf *packet, uint32_t out_port)
+dp_netdev_output_port(void *dp_, struct ofpbuf *packet,
+ const struct flow *flow OVS_UNUSED, odp_port_t out_port)
{
struct dp_netdev *dp = dp_;
{
struct dp_netdev *dp = dp_;
- struct dp_netdev_port *p = dp->ports[o
ut_port
];
+ struct dp_netdev_port *p = dp->ports[o
dp_to_u32(out_port)
];
if (p) {
netdev_send(p->netdev, packet);
}
if (p) {
netdev_send(p->netdev, packet);
}
@@
-1290,8
+1300,11
@@
dp_netdev_output_userspace(struct dp_netdev *dp, const struct ofpbuf *packet,
static void
dp_netdev_action_userspace(void *dp, struct ofpbuf *packet,
const struct flow *key,
static void
dp_netdev_action_userspace(void *dp, struct ofpbuf *packet,
const struct flow *key,
- const struct nlattr *
userdat
a)
+ const struct nlattr *a)
{
{
+ const struct nlattr *userdata;
+
+ userdata = nl_attr_find_nested(a, OVS_USERSPACE_ATTR_USERDATA);
dp_netdev_output_userspace(dp, packet, DPIF_UC_ACTION, key, userdata);
}
dp_netdev_output_userspace(dp, packet, DPIF_UC_ACTION, key, userdata);
}