+ struct dpif_linux *dpif = dpif_linux_cast(dpif_);
+
+ svec_add_nocopy(all_names, xasprintf("dp%d", dpif->minor));
+ svec_add(all_names, dpif->local_ifname);
+ return 0;
+}
+
+static int
+dpif_linux_destroy(struct dpif *dpif_)
+{
+ struct odp_port *ports;
+ size_t n_ports;
+ int err;
+ int i;
+
+ err = dpif_port_list(dpif_, &ports, &n_ports);
+ if (err) {
+ return err;
+ }
+
+ for (i = 0; i < n_ports; i++) {
+ if (ports[i].port != ODPP_LOCAL) {
+ err = do_ioctl(dpif_, ODP_VPORT_DEL, ports[i].devname);
+ if (err) {
+ VLOG_WARN_RL(&error_rl, "%s: error deleting port %s (%s)",
+ dpif_name(dpif_), ports[i].devname, strerror(err));
+ }
+ }
+ }
+
+ free(ports);
+