Revision 8d6249a7 net.c
b/net.c | ||
---|---|---|
544 | 544 |
slirp_input(buf, size); |
545 | 545 |
} |
546 | 546 |
|
547 |
static int slirp_in_use; |
|
548 |
|
|
549 |
static void net_slirp_cleanup(VLANClientState *vc) |
|
550 |
{ |
|
551 |
slirp_in_use = 0; |
|
552 |
} |
|
553 |
|
|
547 | 554 |
static int net_slirp_init(VLANState *vlan, const char *model, const char *name) |
548 | 555 |
{ |
556 |
if (slirp_in_use) { |
|
557 |
/* slirp only supports a single instance so far */ |
|
558 |
return -1; |
|
559 |
} |
|
549 | 560 |
if (!slirp_inited) { |
550 | 561 |
slirp_inited = 1; |
551 | 562 |
slirp_init(slirp_restrict, slirp_ip); |
552 | 563 |
} |
553 | 564 |
slirp_vc = qemu_new_vlan_client(vlan, model, name, |
554 |
slirp_receive, NULL, NULL, NULL);
|
|
565 |
slirp_receive, NULL, net_slirp_cleanup, NULL);
|
|
555 | 566 |
slirp_vc->info_str[0] = '\0'; |
567 |
slirp_in_use = 1; |
|
556 | 568 |
return 0; |
557 | 569 |
} |
558 | 570 |
|
Also available in: Unified diff