*BSD News Article 4075


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!mips!mips!sdd.hp.com!usc!sol.ctr.columbia.edu!ira.uka.de!rz.uni-karlsruhe.de!stepsun.uni-kl.de!uklirb!posthorn!acht!sturm
From: sturm@acht.informatik.uni-kl.de (Peter Sturm)
Subject: I need the netmask within a process?
Message-ID: <sturm.714660382@acht>
Keywords: netmask
Sender: news@posthorn.informatik.uni-kl.de (News system account)
Nntp-Posting-Host: acht.informatik.uni-kl.de
Organization: University of Kaiserslautern, Germany
Date: Mon, 24 Aug 1992 12:46:22 GMT
Lines: 38

Hello!

Does anybody know how i can access the machine's netmask within a process?
The problem is, that i've written a demo program doing broadcast on 
datagram sockets. For this purpose, a correct sockaddr_in structure has to
build for the receiving processes:

        struct sockaddr_in consumers;

        bzero(&consumers,sizeof consumers);
        consumers.sin_family = AF_INET;
        consumers.sin_addr.s_addr = X;
        consumers.sin_port = htons(SOME_PORT_NUMBER);

where X is constructed out of the machine's ip number and the network mask:

	X = ip_number & netmask | 0xffffffff & ~netmask

If i use a hand-coded netmask (0xffffff00 on our network), the program
works fine. But how can i retrieve this netmask using ordinary system calls
or library calls?

On a SUN workstation, there's a include file in_var.h at /usr/include/netinet
which contains the declaration of a structure in_ifaddr. This structure seems
to have a field describing the netmask, but i have no idea how to obtain
such a structure with useful content. 

Any suggestions are welcome,
Peter Sturm

-----------------------------------------------------------------------------
Peter Sturm                                                Tel. 0631/205-3288
University of Kaiserslautern                               Fax. 0631/205-3558
Computer Science Department
P.O. Box 3049
6750 Kaiserslautern                         Email: sturm@informatik.uni-kl.de
Germany
-----------------------------------------------------------------------------