Loading include/netutils/dhcp.h +12 −20 Original line number Diff line number Diff line Loading @@ -23,17 +23,9 @@ __BEGIN_DECLS extern int do_dhcp(char *iname); extern int dhcp_do_request(const char *ifname, char *ipaddr, char *gateway, uint32_t *prefixLength, char *dns[], char *server, uint32_t *lease, char *vendorInfo, char *domain, char *mtu); extern int dhcp_do_request_renew(const char *ifname, extern int dhcp_start(const char *ifname); extern int dhcp_start_renew(const char *ifname); extern int dhcp_get_results(const char *ifname, char *ipaddr, char *gateway, uint32_t *prefixLength, Loading libnetutils/dhcp_utils.c +55 −57 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ static const char DHCP_CONFIG_PATH[] = "/system/etc/dhcpcd/dhcpcd.conf"; static const int NAP_TIME = 200; /* wait for 200ms at a time */ /* when polling for property values */ static const char DAEMON_NAME_RENEW[] = "iprenew"; static char errmsg[100]; static char errmsg[100] = "\0"; /* interface length for dhcpcd daemon start (dhcpcd_<interface> as defined in init.rc file) * or for filling up system properties dhcpcd.<interface>.ipaddress, dhcpcd.<interface>.dns1 * and other properties on a successful bind Loading Loading @@ -167,15 +167,9 @@ static int fill_ip_info(const char *interface, } /* * Start the dhcp client daemon, and wait for it to finish * configuring the interface. * * The device init.rc file needs a corresponding entry for this work. * * Example: * service dhcpcd_<interface> /system/bin/dhcpcd -ABKL -f dhcpcd.conf * Get any available DHCP results. */ int dhcp_do_request(const char *interface, int dhcp_get_results(const char *interface, char *ipaddr, char *gateway, uint32_t *prefixLength, Loading @@ -185,6 +179,44 @@ int dhcp_do_request(const char *interface, char *vendorInfo, char *domain, char *mtu) { char result_prop_name[PROPERTY_KEY_MAX]; char prop_value[PROPERTY_VALUE_MAX]; /* Interface name after converting p2p0-p2p0-X to p2p to reuse system properties */ char p2p_interface[MAX_INTERFACE_LENGTH]; get_p2p_interface_replacement(interface, p2p_interface); snprintf(result_prop_name, sizeof(result_prop_name), "%s.%s.result", DHCP_PROP_NAME_PREFIX, p2p_interface); memset(prop_value, '\0', PROPERTY_VALUE_MAX); if (!property_get(result_prop_name, prop_value, NULL)) { snprintf(errmsg, sizeof(errmsg), "%s", "DHCP result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { if (fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu) == -1) { return -1; } return 0; } else { snprintf(errmsg, sizeof(errmsg), "DHCP result was %s", prop_value); return -1; } } /* * Start the dhcp client daemon, and wait for it to finish * configuring the interface. * * The device init.rc file needs a corresponding entry for this work. * * Example: * service dhcpcd_<interface> /system/bin/dhcpcd -ABKL -f dhcpcd.conf */ int dhcp_start(const char *interface) { char result_prop_name[PROPERTY_KEY_MAX]; char daemon_prop_name[PROPERTY_KEY_MAX]; Loading Loading @@ -228,21 +260,7 @@ int dhcp_do_request(const char *interface, return -1; } if (!property_get(result_prop_name, prop_value, NULL)) { /* shouldn't ever happen, given the success of wait_for_property() */ snprintf(errmsg, sizeof(errmsg), "%s", "DHCP result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { if (fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu) == -1) { return -1; } return 0; } else { snprintf(errmsg, sizeof(errmsg), "DHCP result was %s", prop_value); return -1; } } /** Loading Loading @@ -318,16 +336,7 @@ char *dhcp_get_errmsg() { * service iprenew_<interface> /system/bin/dhcpcd -n * */ int dhcp_do_request_renew(const char *interface, char *ipaddr, char *gateway, uint32_t *prefixLength, char *dns[], char *server, uint32_t *lease, char *vendorInfo, char *domain, char *mtu) int dhcp_start_renew(const char *interface) { char result_prop_name[PROPERTY_KEY_MAX]; char prop_value[PROPERTY_VALUE_MAX] = {'\0'}; Loading Loading @@ -357,16 +366,5 @@ int dhcp_do_request_renew(const char *interface, return -1; } if (!property_get(result_prop_name, prop_value, NULL)) { /* shouldn't ever happen, given the success of wait_for_property() */ snprintf(errmsg, sizeof(errmsg), "%s", "DHCP Renew result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { return fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu); } else { snprintf(errmsg, sizeof(errmsg), "DHCP Renew result was %s", prop_value); return -1; } return 0; } Loading
include/netutils/dhcp.h +12 −20 Original line number Diff line number Diff line Loading @@ -23,17 +23,9 @@ __BEGIN_DECLS extern int do_dhcp(char *iname); extern int dhcp_do_request(const char *ifname, char *ipaddr, char *gateway, uint32_t *prefixLength, char *dns[], char *server, uint32_t *lease, char *vendorInfo, char *domain, char *mtu); extern int dhcp_do_request_renew(const char *ifname, extern int dhcp_start(const char *ifname); extern int dhcp_start_renew(const char *ifname); extern int dhcp_get_results(const char *ifname, char *ipaddr, char *gateway, uint32_t *prefixLength, Loading
libnetutils/dhcp_utils.c +55 −57 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ static const char DHCP_CONFIG_PATH[] = "/system/etc/dhcpcd/dhcpcd.conf"; static const int NAP_TIME = 200; /* wait for 200ms at a time */ /* when polling for property values */ static const char DAEMON_NAME_RENEW[] = "iprenew"; static char errmsg[100]; static char errmsg[100] = "\0"; /* interface length for dhcpcd daemon start (dhcpcd_<interface> as defined in init.rc file) * or for filling up system properties dhcpcd.<interface>.ipaddress, dhcpcd.<interface>.dns1 * and other properties on a successful bind Loading Loading @@ -167,15 +167,9 @@ static int fill_ip_info(const char *interface, } /* * Start the dhcp client daemon, and wait for it to finish * configuring the interface. * * The device init.rc file needs a corresponding entry for this work. * * Example: * service dhcpcd_<interface> /system/bin/dhcpcd -ABKL -f dhcpcd.conf * Get any available DHCP results. */ int dhcp_do_request(const char *interface, int dhcp_get_results(const char *interface, char *ipaddr, char *gateway, uint32_t *prefixLength, Loading @@ -185,6 +179,44 @@ int dhcp_do_request(const char *interface, char *vendorInfo, char *domain, char *mtu) { char result_prop_name[PROPERTY_KEY_MAX]; char prop_value[PROPERTY_VALUE_MAX]; /* Interface name after converting p2p0-p2p0-X to p2p to reuse system properties */ char p2p_interface[MAX_INTERFACE_LENGTH]; get_p2p_interface_replacement(interface, p2p_interface); snprintf(result_prop_name, sizeof(result_prop_name), "%s.%s.result", DHCP_PROP_NAME_PREFIX, p2p_interface); memset(prop_value, '\0', PROPERTY_VALUE_MAX); if (!property_get(result_prop_name, prop_value, NULL)) { snprintf(errmsg, sizeof(errmsg), "%s", "DHCP result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { if (fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu) == -1) { return -1; } return 0; } else { snprintf(errmsg, sizeof(errmsg), "DHCP result was %s", prop_value); return -1; } } /* * Start the dhcp client daemon, and wait for it to finish * configuring the interface. * * The device init.rc file needs a corresponding entry for this work. * * Example: * service dhcpcd_<interface> /system/bin/dhcpcd -ABKL -f dhcpcd.conf */ int dhcp_start(const char *interface) { char result_prop_name[PROPERTY_KEY_MAX]; char daemon_prop_name[PROPERTY_KEY_MAX]; Loading Loading @@ -228,21 +260,7 @@ int dhcp_do_request(const char *interface, return -1; } if (!property_get(result_prop_name, prop_value, NULL)) { /* shouldn't ever happen, given the success of wait_for_property() */ snprintf(errmsg, sizeof(errmsg), "%s", "DHCP result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { if (fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu) == -1) { return -1; } return 0; } else { snprintf(errmsg, sizeof(errmsg), "DHCP result was %s", prop_value); return -1; } } /** Loading Loading @@ -318,16 +336,7 @@ char *dhcp_get_errmsg() { * service iprenew_<interface> /system/bin/dhcpcd -n * */ int dhcp_do_request_renew(const char *interface, char *ipaddr, char *gateway, uint32_t *prefixLength, char *dns[], char *server, uint32_t *lease, char *vendorInfo, char *domain, char *mtu) int dhcp_start_renew(const char *interface) { char result_prop_name[PROPERTY_KEY_MAX]; char prop_value[PROPERTY_VALUE_MAX] = {'\0'}; Loading Loading @@ -357,16 +366,5 @@ int dhcp_do_request_renew(const char *interface, return -1; } if (!property_get(result_prop_name, prop_value, NULL)) { /* shouldn't ever happen, given the success of wait_for_property() */ snprintf(errmsg, sizeof(errmsg), "%s", "DHCP Renew result property was not set"); return -1; } if (strcmp(prop_value, "ok") == 0) { return fill_ip_info(interface, ipaddr, gateway, prefixLength, dns, server, lease, vendorInfo, domain, mtu); } else { snprintf(errmsg, sizeof(errmsg), "DHCP Renew result was %s", prop_value); return -1; } return 0; }