Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[network] Unify network configuration handling into one function
Get all the network data from one function, so we do not need
to have the same work-arounds, or fallbacks in different places.

Signed-off-by: Philippe De Swert <philippe.deswert@jollamobile.com>
  • Loading branch information
philippedeswert committed Aug 3, 2015
1 parent dedf81d commit e642cef
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 54 deletions.
27 changes: 18 additions & 9 deletions src/usb_moded-config.c
Expand Up @@ -121,7 +121,7 @@ char * get_trigger_value(void)
return(get_conf_string(TRIGGER_ENTRY, TRIGGER_PROPERTY_VALUE_KEY));
}

char * get_network_ip(void)
static char * get_network_ip(void)
{
char * ip = get_kcmdline_string(NETWORK_IP_KEY);
if (ip != NULL)
Expand All @@ -131,12 +131,12 @@ char * get_network_ip(void)
return(get_conf_string(NETWORK_ENTRY, NETWORK_IP_KEY));
}

char * get_network_interface(void)
static char * get_network_interface(void)
{
return(get_conf_string(NETWORK_ENTRY, NETWORK_INTERFACE_KEY));
}

char * get_network_gateway(void)
static char * get_network_gateway(void)
{
char * gw = get_kcmdline_string(NETWORK_GATEWAY_KEY);
if (gw != NULL)
Expand All @@ -145,7 +145,7 @@ char * get_network_gateway(void)
return(get_conf_string(NETWORK_ENTRY, NETWORK_GATEWAY_KEY));
}

char * get_network_netmask(void)
static char * get_network_netmask(void)
{
char * netmask = get_kcmdline_string(NETWORK_NETMASK_KEY);
if (netmask != NULL)
Expand All @@ -154,7 +154,7 @@ char * get_network_netmask(void)
return(get_conf_string(NETWORK_ENTRY, NETWORK_NETMASK_KEY));
}

char * get_network_nat_interface(void)
static char * get_network_nat_interface(void)
{
return(get_conf_string(NETWORK_ENTRY, NETWORK_NAT_INTERFACE_KEY));
}
Expand Down Expand Up @@ -474,6 +474,15 @@ char * get_network_setting(const char *config)
}
else if(!strcmp(config, NETWORK_INTERFACE_KEY))
{

/* check main configuration before using
the information from the specific mode */
ret = get_network_interface();

if(ret)
goto end;
/* no interface override specified, let's use the one
from the mode config */
data = get_usb_mode_data();
if(data)
{
Expand All @@ -483,18 +492,18 @@ char * get_network_setting(const char *config)
goto end;
}
}
ret = get_network_interface();
if(!ret)
ret = strdup("usb0");
ret = strdup("usb0");
}
else if(!strcmp(config, NETWORK_GATEWAY_KEY))
return(get_network_gateway());
else if(strcmp(config, NETWORK_NETMASK_KEY))
else if(!strcmp(config, NETWORK_NETMASK_KEY))
{
ret = get_network_netmask();
if(!ret)
ret = strdup("255.255.255.0");
}
else if(!strcmp(config, NETWORK_NAT_INTERFACE_KEY))
return(get_network_nat_interface());
else
/* no matching keys, return error */
return(NULL);
Expand Down
5 changes: 0 additions & 5 deletions src/usb_moded-config.h
Expand Up @@ -72,11 +72,6 @@ char * get_trigger_property(void);
char * get_trigger_value(void);

char * get_network_setting(const char *config);
char * get_network_ip(void);
char * get_network_interface(void);
char * get_network_gateway(void);
char * get_network_netmask(void);
char * get_network_nat_interface(void);

char * get_android_manufacturer(void);
char * get_android_vendor_id(void);
Expand Down
59 changes: 19 additions & 40 deletions src/usb_moded-network.c
Expand Up @@ -95,26 +95,13 @@ static char* get_interface(struct mode_list_elem *data)
char *interface = NULL;
int check = 0;

/* check main configuration before using
the information from the specific mode */
interface = (char *)get_network_interface();
/* no interface override specified, let's use the one
from the mode config */
if(data && !interface)
{
if(data->network_interface)
{
interface = strdup(data->network_interface);
}
}

if(interface != NULL)
check = check_interface(interface);
interface = get_network_setting(NETWORK_INTERFACE_KEY);
check = check_interface(interface);

if(interface == NULL || check != 0)
if(check != 0)
{
if(interface != NULL)
free((char *)interface);
free(interface);
/* no known interface configured and existing, falling back to usb0 */
interface = malloc(sizeof(default_interface)*sizeof(char));
strncpy(interface, default_interface, sizeof(default_interface));
Expand All @@ -124,7 +111,7 @@ static char* get_interface(struct mode_list_elem *data)
if(check)
{
log_warning("Configured interface is incorrect, nor does usb0 exists. Check your config!\n");
free((char *)interface);
free(interface);
return(0);
}

Expand All @@ -144,7 +131,7 @@ static int set_usb_ip_forward(struct mode_list_elem *data, struct ipforward_data
interface = get_interface(data);
if(interface == NULL)
return(1);
nat_interface = get_network_nat_interface();
nat_interface = get_network_setting(NETWORK_NAT_INTERFACE_KEY);
if((nat_interface == NULL) && (ipforward->nat_interface != NULL))
nat_interface = strdup(ipforward->nat_interface);
else
Expand All @@ -154,7 +141,8 @@ static int set_usb_ip_forward(struct mode_list_elem *data, struct ipforward_data
/* in case the cellular did not come up we want to make sure wifi gets restored */
connman_reset_state();
#endif
free((char *)interface);
free(interface);
free(nat_interface);
return(1);
}
write_to_file("/proc/sys/net/ipv4/ip_forward", "1");
Expand Down Expand Up @@ -1031,9 +1019,7 @@ int usb_network_up(struct mode_list_elem *data)
dbus_message_iter_close_container(&dict, &dict_entry);

log_debug("Set ip\n");
ip = get_network_ip();
if(ip == NULL)
ip = strdup("192.168.2.15");
ip = get_network_settings(NETWORK_IP_KEY);
dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &dict_entry);
append_variant(&dict_entry, "Address", DBUS_TYPE_STRING, ip);
dbus_message_iter_close_container(&dict, &dict_entry);
Expand All @@ -1044,7 +1030,7 @@ int usb_network_up(struct mode_list_elem *data)
dbus_message_iter_close_container(&dict, &dict_entry);

log_debug("set gateway\n");
gateway = get_network_gateway();
gateway = get_network_setting(NETWORK_GATEWAY_KEY);
if(gateway)
{
dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY, NULL, &dict_entry);
Expand Down Expand Up @@ -1076,7 +1062,7 @@ int usb_network_up(struct mode_list_elem *data)

#else
char command[128];
const char *interface;
char *interface;
char *netmask;

interface = get_interface(data);
Expand All @@ -1085,17 +1071,11 @@ int usb_network_up(struct mode_list_elem *data)
return(1);

/* interface found, so we can get all the rest */
ip = get_network_ip();
gateway = get_network_gateway();
ip = get_network_setting(NETWORK_IP_KEY);
gateway = get_network_setting(NETWORK_GATEWAY_KEY);
netmask = get_network_setting(NETWORK_NETMASK_KEY);

if(ip == NULL)
{
sprintf(command,"ifconfig %s 192.168.2.15 %s", interface, netmask);
system(command);
goto clean;
}
else if(!strcmp(ip, "dhcp"))
if(!strcmp(ip, "dhcp"))
{
sprintf(command, "dhclient -d %s\n", interface);
ret = system(command);
Expand All @@ -1119,10 +1099,9 @@ int usb_network_up(struct mode_list_elem *data)
system(command);
}

clean:
free((char *)interface);
free((char *)gateway);
free((char *)ip);
free(interface);
free(gateway);
free(ip);
free(netmask);

return(0);
Expand Down Expand Up @@ -1181,7 +1160,7 @@ int usb_network_down(struct mode_list_elem *data)

return(ret);
#else
const char *interface;
char *interface;
char command[128];

interface = get_interface(data);
Expand All @@ -1195,7 +1174,7 @@ int usb_network_down(struct mode_list_elem *data)
if(data->nat)
clean_usb_ip_forward();

free((char *)interface);
free(interface);

return(0);
#endif /* CONNMAN_IS_EVER_FIXED_FOR_USB */
Expand Down

0 comments on commit e642cef

Please sign in to comment.