Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Aug 2009 08:11:26 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
To:        freebsd-hackers@freebsd.org
Cc:        bert wiley <bertwiley@gmail.com>
Subject:   Re: Need help trying to to use the ntohl() call with in_addr
Message-ID:  <20090814080915.J93661@maildrop.int.zabbadoz.net>
In-Reply-To: <200908140944.44141.max@love2party.net>
References:  <9527461a0908132029xb2c6149r9f51c775d22ae670@mail.gmail.com> <200908140944.44141.max@love2party.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 14 Aug 2009, Max Laier wrote:

> On Friday 14 August 2009 05:29:19 bert wiley wrote:
>> Hi everyone
>>
>>   Im new to list and this question may be out of place. This is my first
>> post. Im new to freebsd and trying to understand how to create a jail from
>> some system calls. I followed the jail subsystem description from the
>> handbook and im having a problem or may be using the call incorrectly. But
>> here is what im trying to do.
>>
>>
>> int main()
>> {
>>   struct in_addr ipaddr;
>>   struct jail myjail;
>>
>>   char path[PATH_MAX];
>>
>>   realpath("/tmp", path);
>>
>>   myjail.version = 1;
>>   myjail.path = path;
>>   myjail.hostname = "testjail";
>>
>>   const char *ip;
>>   ip = "192.168.1.142";
>>
>>   inet_aton(ip, &ipaddr);
>>   myjail.ip4 = ntohl(ipaddr.s_addr);   //  I get and error here, invalid
>> conversion from   _uint32_t' to in_addr*
>>   myjail.ip4 = ipaddr.s_addr;            // and and error here, invlid
>> conversion from in_addr_t to in_addr*
>> }
>>
>>
>> I know that there is more that needs to be done but this just a test stub
>> as im trying to work thru the calls and understand whats going on.
>> Any would be appreciated thanks.
>
> Take a look at the jail(2) man page:
>
>     The ``ip4s'' and ``ip6s'' give the numbers of IPv4 and IPv6 addresses
>     that will be passed via their respective pointers.
>
>     The ``ip4'' and ``ip6'' pointers can be set to an arrays of IPv4 and IPv6
>     addresses to be assigned to the prison, or NULL if none.  IPv4 addresses
>     must be in network byte order.
>
> So you'd do something like the following:
>
> 	myjail.ip4s = 1;
> 	inet_aton(ip, &ipaddr);
> 	myjail.ip4 = &ipaddr;
>
> You don't have to switch byte order.

and in that case of 7.2-R or later multi-IP jails the version should
not be 1 either.

I fixed tools/regressions/priv the other day; maybe this helps a bit
as well:
http://svn.freebsd.org/viewvc/base/head/tools/regression/priv/main.c?r1=173679&r2=196172

/bz

-- 
Bjoern A. Zeeb           What was I talking about and who are you again?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090814080915.J93661>