tftpclient: converting to net sockets
[barrelfish] / include / net / dhcp.h
1 /**
2  * @brief
3  *  net.h
4  */
5
6 /*
7  * Copyright (c) 2017, ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Universitaetsstrasse 6, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15
16 #ifndef LIB_NET_INCLUDE_NETWORKING_DHCP_H_
17 #define LIB_NET_INCLUDE_NETWORKING_DHCP_H_
18
19 #include <net/net.h>
20 #include <lwip/ip_addr.h>
21
22 #define NET_CONFIG_IP_RECORD_FIELDS "{ ip: %d, gw: %d, netmask: %d }"
23 #define NET_CONFIG_CURRENT_IP_RECORD_FORMAT "net.ipconfig " NET_CONFIG_IP_RECORD_FIELDS
24 #define NET_CONFIG_CURRENT_IP_RECORD_REGEX "net.ipconfig  {ip: _,  gw: _, netmask: _}"
25 #define NET_CONFIG_STATIC_IP_RECORD_FORMAT "net.static_ip " NET_CONFIG_IP_RECORD_FIELDS
26 #define NET_CONFIG_STATIC_IP_RECORD_REGEX "net.static_ip  {ip: _,  gw: _, netmask: _}"
27
28 /**
29  * @brief starts the dhcpd service on the interface
30  *
31  * @param flags flags to provide
32  *
33  * @return SYS_ERR_OK on success, errval on failure
34  */
35 errval_t dhcpd_start(net_flags_t flags);
36
37
38 /**
39  * @brief stops the dhcpd service
40  */
41 errval_t dhcpd_stop(void);
42
43
44 /* functions for querying the current settings */
45
46 /**
47  * @brief queries the current ip setting of the machine
48  *
49  * @param flags flags to provide
50  *
51  * @return SYS_ERR_OK on success, errval on failure
52  */
53 errval_t net_config_current_ip_query(net_flags_t flags);
54
55
56 /**
57  * @brief queries the static ip setting of the machine
58  *
59  * @param flags flags to provide
60  *
61  * @return SYS_ERR_OK on success, errval on failure
62  */
63 errval_t net_config_static_ip_query(net_flags_t flags);
64
65
66 /**
67  * @brief returns the IP configuration
68  *
69  * @param ip    return the IP address
70  * @param gw    returns the gateway
71  * @param nm    returns the netmask
72  *
73  * @return
74  */
75 errval_t netif_get_ipconfig(struct in_addr *ip, struct in_addr *gw, struct in_addr *nm);
76
77 /**
78  * @brief sets the IP configuration
79  *
80  * @param ip    the IP address
81  * @param gw    the Gateway
82  * @param nm    the Netmask
83  *
84  * @return SYS_ERR_OK on success, errval on failure
85  */
86 errval_t netif_set_ipconfig(struct in_addr *ip, struct in_addr *gw, struct in_addr *nm);
87
88 #endif /* LIB_NET_INCLUDE_NETWORKING_DHCP_H_ */