[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: autoconfiguration of network



On Tue, Oct 05, 1999 at 11:54:11PM +0200, Eric Delaunay wrote:
> 
> Hello,
> 
>   I'm thinking about a way to fill the fields of the boxes in the network
> configuration step with good default values.  They are actually static values,
> like 192.168.1.1 for inet addr.
> As many sparc are installed from network (rarp, bootp, tftp) the net device is
> already configured and I guess this configuration could be extracted.
> However I don't have much experience on net programming, so I would want to
> know how I could get this configuration from the kernel.  I would want to do
> something like ifconfig does when displaying net device informations.
> 
> I started with the following block of code:
> 
> #include "net/if.h"
> struct ifreq ifrs;
> int fd = socket(AF_INET,SOCK_DGRAM,0);
> ioctl(fd,SIOCSIFADDR,&ifrs);
> 
> Then I could get inet addr from "ifrs.ifr_addr" but it's sockattr structure.
> How do I convert it to quad dotted string format ?

ISTR that you can do something like:

#include <netinet/in.h>
struct in_addr addr;
addr = ((sockaddr_in) ifrs.ifr_addr).sin_addr
  /* since sockaddr_in is one of a union of types that sockaddr can be
     and since AF_INET gets you this flavor of socket - see sys/socket.h
  */

Then there are some macros (I think) to convert to different formats.
I don't remember which exactly, check htonl and friends.  ISTR that you
end up converting to host order then picking the bytes out to convert
to ASCII.  The 3 least significant bytes (x.y.y.y - the y's) are easy.
The most significant byte is something like 255-x or 256-x before
you convert to ASCII (don't ask me why - it's apparently one of those
mysteries... :)).

I have some old network code around somewhere that does exactly what
you're looking for in the way of conversion, although I get a struct
sockaddr from somewhere different than your ioctl, let me see if I can
find it for you.  It may take a few days, though, so maybe you'll have
it cracked by then :-).

Steve Bowman

> 
> The next step could be doing NIS requests to get hostname & domainname.
> 
> Any pointers greatly appreciated.
> Thanks in advance.
> 
> -- 
>  Eric Delaunay                 | "La guerre justifie l'existence des militaires.
>  delaunay@lix.polytechnique.fr | En les supprimant." Henri Jeanson (1900-1970)
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-boot-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 

-- 
Steve Bowman <sbowman@goodnet.com><bowmanc@acm.org>
Buckeye, AZ

Powered by Debian GNU/Linux <http://www.debian.org>


Reply to: