struct dpif_port *dpif_port)
{
dpif_port->name = xstrdup(netdev_get_name(port->netdev));
- dpif_port->type = xstrdup(port->internal ? "internal" : "system");
+ dpif_port->type = xstrdup(port->internal ? "internal"
+ : netdev_get_type(port->netdev));
dpif_port->port_no = port->port_no;
}
free(state->name);
state->name = xstrdup(netdev_get_name(port->netdev));
dpif_port->name = state->name;
- dpif_port->type = port->internal ? "internal" : "system";
+ dpif_port->type = (char *) (port->internal ? "internal"
+ : netdev_get_type(port->netdev));
dpif_port->port_no = port->port_no;
state->port_no = port_no + 1;
return 0;
}
}
-static void
-dp_netdev_pop_vlan(struct ofpbuf *packet)
-{
- struct vlan_eth_header *veh = packet->l2;
- if (packet->size >= sizeof *veh
- && veh->veth_type == htons(ETH_TYPE_VLAN)) {
- struct eth_header tmp;
-
- memcpy(tmp.eth_dst, veh->veth_dst, ETH_ADDR_LEN);
- memcpy(tmp.eth_src, veh->veth_src, ETH_ADDR_LEN);
- tmp.eth_type = veh->veth_next_type;
-
- ofpbuf_pull(packet, VLAN_HEADER_LEN);
- packet->l2 = (char*)packet->l2 + VLAN_HEADER_LEN;
- memcpy(packet->data, &tmp, sizeof tmp);
- }
-}
-
static void
dp_netdev_set_dl(struct ofpbuf *packet, const struct ovs_key_ethernet *eth_key)
{
break;
case OVS_ACTION_ATTR_POP_VLAN:
- dp_netdev_pop_vlan(packet);
+ eth_pop_vlan(packet);
break;
case OVS_ACTION_ATTR_SET: