Skip to content

Commit

Permalink
Update nm-wireguard-service.c
Browse files Browse the repository at this point in the history
for try code @yanzilisan183  from max-moser#62
  • Loading branch information
EBII authored Nov 4, 2023
1 parent 0e1124d commit c2f4f85
Showing 1 changed file with 48 additions and 2 deletions.
50 changes: 48 additions & 2 deletions src/nm-wireguard-service.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,14 +391,60 @@ set_config(NMVpnServicePlugin *plugin, NMConnection *connection)
setting = get_setting(s_vpn, NM_WG_KEY_DNS);
if(setting){
// TODO

val = g_variant_new_string(setting);
g_variant_builder_add(&dns_builder, "{ss}", NMV_WG_TAG_DNS, val);
g_variant_builder_add(&dns_builder, "{sv}", NMV_WG_TAG_DNS, val);
has_dns = TRUE;
}

setting = get_setting(s_vpn, NM_WG_KEY_ENDPOINT);
if(setting){
// TODO
char *p;
int q = 0;
int l = strlen(setting);
for(int i=0; i<l; i++){
if(setting[i]==':'){
q++;
}
}
if(q>1){
// Look like IPv6
val = ip6_to_gvariant(setting);
if(val){
g_variant_builder_add(&builder, "{sv}", NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val);
}
}else{
// IPv4 or domain name.
p = strstr(setting, ":");
if(p){
// Delete :port.
p[0]='\0';
}
val = ip4_to_gvariant(setting);
if(val){
// Is IP address.
// NM_VPN_PLUGIN_IP4_CONFIG_GATEWAY == NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY == NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY
g_variant_builder_add(&builder, "{sv}", NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val);
}else{
// Is hostname or domain name.
struct hostent *host;
char buff[17];
if ((host = gethostbyname2(setting, AF_INET)) != NULL){
inet_ntop(AF_INET, (struct in_addr *)host->h_addr_list[0], buff, sizeof(buff));
val = ip4_to_gvariant(buff);
if(val){
g_variant_builder_add(&builder, "{sv}", NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val);
}
}else if((host = gethostbyname2(setting, AF_INET6)) != NULL){
inet_ntop(AF_INET6, (struct in_addr *)host->h_addr_list[0], buff, sizeof(buff));
val = ip6_to_gvariant(buff);
if(val){
g_variant_builder_add(&builder, "{sv}", NM_VPN_PLUGIN_CONFIG_EXT_GATEWAY, val);
}
}
}
}

}

setting = get_setting(s_vpn, NM_WG_KEY_MTU);
Expand Down

0 comments on commit c2f4f85

Please sign in to comment.