[Lguest] [PATCH 3/3] lguest: Support assigning a MAC address

Mark McLoughlin markmc at redhat.com
Tue Jun 17 20:06:27 EST 2008


On Sat, 2008-06-14 at 19:20 +1000, Rusty Russell wrote:
> On Friday 13 June 2008 23:05:00 Mark McLoughlin wrote:
> > Allow assigning a MAC address to the network interface with
> > e.g.
> >
> >   --tunnet=bridge:eth0:00:FF:95:6B:DA:3D
> >
> > or:
> >
> >   --tunnet=192.168.121.1:00:FF:95:6B:DA:3D
> >
> > which is pretty unintelligable, but ...
> 
> Agreed... ugly but clear.
> 
> Not sure about tossing around the ifr just to hold the interface name
> across configure_device and get_mac though.  If we put it in a nice var,
> we can have a cleaner interface and a better verbose() message.
> 
> Oh, and I'm trying to hang with the cool kids and use bool :)

Yep, all looks better. Works fine too.

> +static int get_tun_device(char tapif[IFNAMSIZ])
> +{
> +	struct ifreq ifr;
> +	int netfd;
> +
> +	/* Start with this zeroed.  Messy but sure. */
> +	memset(&ifr, 0, sizeof(ifr));
> +
> +	/* We open the /dev/net/tun device and tell it we want a tap device.  A
> +	 * tap device is like a tun device, only somehow different.  To tell
> +	 * the truth, I completely blundered my way through this code, but it
> +	 * works now! */
> +	netfd = open_or_die("/dev/net/tun", O_RDWR);
> +	ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
> +	strcpy(ifr.ifr_name, "tap%d");

You can drop this line with no effect, btw - tun/tap defaults to "tap%d"
for IFF_TAP

> +	if (ioctl(netfd, TUNSETIFF, &ifr) != 0)
> +		err(1, "configuring /dev/net/tun");

...

> -static void setup_tun_net(const char *arg)
> +static void setup_tun_net(char *arg)

Bah ... and the hoops I jumped through to avoid that ... :-)

Cheers,
Mark.




More information about the Lguest mailing list