28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

138<br />

RUMP_COMPONENT(RUMP_COMPONENT_NET)<br />

{<br />

DOMAINADD(inetdomain);<br />

}<br />

[ omitted: attach o<strong>the</strong>r domains ]<br />

RUMP_COMPONENT(RUMP_COMPONENT_NET_IFCFG)<br />

{<br />

[ omitted: local variables ]<br />

if ((error = socreate(AF_INET, &so, SOCK_DGRAM, 0, curlwp, NULL)) != 0)<br />

panic("lo0 config: cannot create socket");<br />

/* configure 127.0.0.1 for lo0 */<br />

memset(&ia, 0, size<strong>of</strong>(ia));<br />

strcpy(ia.ifra_name, "lo0");<br />

sin = (struct sockaddr_in *)&ia.ifra_addr;<br />

sin->sin_family = AF_INET;<br />

sin->sin_len = size<strong>of</strong>(struct sockaddr_in);<br />

sin->sin_addr.s_addr = inet_addr("127.0.0.1");<br />

[ omitted: define lo0 netmask <strong>and</strong> broadcast address ]<br />

}<br />

in_control(so, SIOCAIFADDR, &ia, lo0ifp, curlwp);<br />

soclose(so);<br />

Figure 3.20: Example: selected contents <strong>of</strong> component.c for netinet. <strong>The</strong><br />

inet domain is attached in one constructor. <strong>The</strong> presence <strong>of</strong> <strong>the</strong> domain is required<br />

for configuring an inet address for lo0. <strong>The</strong> interface itself is provided <strong>and</strong> created<br />

by <strong>the</strong> net component (not shown).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!