static int print_vlan(DeviceState *dev, Property *prop, char *dest, size_t len) { NetClientState **ptr = qdev_get_prop_ptr(dev, prop); if (*ptr) { int id; if (!net_hub_id_for_client(*ptr, &id)) { return snprintf(dest, len, "%d", id); } } return snprintf(dest, len, "<null>"); }
static void get_vlan(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { DeviceState *dev = DEVICE(obj); Property *prop = opaque; NetClientState **ptr = qdev_get_prop_ptr(dev, prop); int32_t id = -1; if (*ptr) { int hub_id; if (!net_hub_id_for_client(*ptr, &hub_id)) { id = hub_id; } } visit_type_int32(v, name, &id, errp); }
int net_init_dump(const NetClientOptions *opts, const char *name, NetClientState *peer, Error **errp) { int len; const char *file; char def_file[128]; const NetdevDumpOptions *dump; assert(opts->kind == NET_CLIENT_OPTIONS_KIND_DUMP); dump = opts->dump; assert(peer); if (dump->has_file) { file = dump->file; } else { int id; int ret; ret = net_hub_id_for_client(peer, &id); assert(ret == 0); /* peer must be on a hub */ snprintf(def_file, sizeof(def_file), "qemu-vlan%d.pcap", id); file = def_file; } if (dump->has_len) { if (dump->len > INT_MAX) { error_setg(errp, "invalid length: %"PRIu64, dump->len); return -1; } len = dump->len; } else { len = 65536; } return net_dump_init(peer, "dump", name, file, len, errp); }
int xen_config_dev_nic(NICInfo *nic) { char fe[256], be[256]; char mac[20]; int vlan_id = -1; net_hub_id_for_client(nic->netdev, &vlan_id); snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x", nic->macaddr.a[0], nic->macaddr.a[1], nic->macaddr.a[2], nic->macaddr.a[3], nic->macaddr.a[4], nic->macaddr.a[5]); xen_be_printf(NULL, 1, "config nic %d: mac=\"%s\"\n", vlan_id, mac); xen_config_dev_dirs("vif", "qnic", vlan_id, fe, be, sizeof(fe)); /* frontend */ xenstore_write_int(fe, "handle", vlan_id); xenstore_write_str(fe, "mac", mac); /* backend */ xenstore_write_int(be, "handle", vlan_id); xenstore_write_str(be, "mac", mac); /* common stuff */ return xen_config_dev_all(fe, be); }