Commit 676cff2940f3d34e2ef7735df0f83cce958b0d77

Authored by aliguori
1 parent bf38c1a0

Assign a name to each VLAN client (Mark McLoughlin)

Automatically assign a name to each vlan client based on its model,
e.g. e1000.0, tap.3 or vde.1.

This name is intended to be used by the forthcoming 'set_link'
monitor command.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6217 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 2 changed files with 22 additions and 0 deletions
... ... @@ -296,6 +296,25 @@ static int parse_unix_path(struct sockaddr_un *uaddr, const char *str)
296 296 }
297 297 #endif
298 298  
  299 +static char *assign_name(VLANClientState *vc1, const char *model)
  300 +{
  301 + VLANState *vlan;
  302 + char buf[256];
  303 + int id = 0;
  304 +
  305 + for (vlan = first_vlan; vlan; vlan = vlan->next) {
  306 + VLANClientState *vc;
  307 +
  308 + for (vc = vlan->first_client; vc; vc = vc->next)
  309 + if (vc != vc1 && strcmp(vc->model, model) == 0)
  310 + id++;
  311 + }
  312 +
  313 + snprintf(buf, sizeof(buf), "%s.%d", model, id);
  314 +
  315 + return strdup(buf);
  316 +}
  317 +
299 318 VLANClientState *qemu_new_vlan_client(VLANState *vlan,
300 319 const char *model,
301 320 IOReadHandler *fd_read,
... ... @@ -307,6 +326,7 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan,
307 326 if (!vc)
308 327 return NULL;
309 328 vc->model = strdup(model);
  329 + vc->name = assign_name(vc, model);
310 330 vc->fd_read = fd_read;
311 331 vc->fd_can_read = fd_can_read;
312 332 vc->opaque = opaque;
... ... @@ -327,6 +347,7 @@ void qemu_del_vlan_client(VLANClientState *vc)
327 347 while (*pvc != NULL)
328 348 if (*pvc == vc) {
329 349 *pvc = vc->next;
  350 + free(vc->name);
330 351 free(vc->model);
331 352 free(vc);
332 353 break;
... ...
... ... @@ -19,6 +19,7 @@ struct VLANClientState {
19 19 struct VLANClientState *next;
20 20 struct VLANState *vlan;
21 21 char *model;
  22 + char *name;
22 23 char info_str[256];
23 24 };
24 25  
... ...