iplib: Add get_first_noloop_iplifc() helper
[akaros.git] / user / iplib / myipaddr.c
1 /*
2  * This file is part of the UCB release of Plan 9. It is subject to the license
3  * terms in the LICENSE file found in the top-level directory of this
4  * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
5  * part of the UCB release of Plan 9, including this file, may be copied,
6  * modified, propagated, or distributed except according to the terms contained
7  * in the LICENSE file.
8  */
9 #include <stdlib.h>
10
11 #include <iplib/iplib.h>
12 #include <parlib/parlib.h>
13 #include <signal.h>
14 #include <stdio.h>
15 #include <unistd.h>
16
17 // find first ip addr that isn't the friggin loopback address
18 // unless there are no others
19 int myipaddr(uint8_t *ip, char *net)
20 {
21         struct iplifc *lifc;
22         struct ipifc *ifc;
23
24         lifc = get_first_noloop_iplifc(net, &ifc);
25         if (!lifc) {
26                 ipmove(ip, IPnoaddr);
27                 return -1;
28         }
29         ipmove(ip, lifc->ip);
30         free_ipifc(ifc);
31         return 0;
32 }