[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: tap interface address
On Mon, 11 Aug 2008, Quentin Garnier wrote:
> On Mon, Aug 11, 2008 at 02:23:50PM +0100, Iain Hibbert wrote:
> > Hi,
> > Am trying to open a tap(4) device and get the interface address, but
> > SIOCGIFADDR does not work (though it seems that it should, looking at the
> > if_tap.c code and ether_ioctl()) No error is produced but nothing is
> I... doubt that. tap_dev_ioctl() returns ENOTTY (as it should). I'll
> try though, there might be a bug.
Mm, maybe you are right, but the program shows no error (is ENOTTY
rewritten to something else in the dev code?)
> > and I worked out how to change the physical address using SIOCSIFPHYADDR
> That won't work either if you do it on the fd returned by /dev/tap.
Sorry - yes, was using a socket (BTPROTO_L2CAP) for that.
If I try the SIOCGIFADDR through that socket I do get ENOTTY.
Interestingly, using socket(PF_INET, SOCK_STREAM, 0) gives EADDRNOTAVAIL
as does (PF_INET, SOCK_DGRAM, 0) but (PF_INET, SOCK_SEQPACKET, 0) is
I thought that the 'i' ioctls were diverted to the network stack?
I wonder if I need to prepare the sockaddr somehow?
> Iain, the way one is supposed to manipulate an interface is through a
> socket. So you have to open a socket first (AF_INET is fine to do the
> SIOCSIFPHYADDR call, and you can use it later to set an ipv4 address on
> the interface and so on), and then do the ioctl calls on it.
dhclient will handle all that stuff. I just want to get the address
> I don't think I should blindly let ioctls go to tap_ioctl from the
> character device, but I guess I could at least allow my kludgy
> SIOCSIFPHYADDR. Though usually if you're playing with a tap interface
> you'll need a socket at some point.
Well, you need the fd for the IO in any case..
Main Index |
Thread Index |