static void add_routes_section (CEPageIP4 *page) { GtkWidget *widget; GtkWidget *frame; GtkWidget *list; gint i; widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "routes_section")); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (widget), frame); page->routes_list = list = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)sort_first_last, NULL, NULL); gtk_container_add (GTK_CONTAINER (frame), list); page->auto_routes = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (page)->builder, "auto_routes_switch")); gtk_switch_set_active (page->auto_routes, !nm_setting_ip4_config_get_ignore_auto_routes (page->setting)); g_signal_connect (page->auto_routes, "notify::active", G_CALLBACK (switch_toggled), page); add_section_toolbar (page, widget, G_CALLBACK (add_empty_route_row)); for (i = 0; i < nm_setting_ip4_config_get_num_routes (page->setting); i++) { NMIP4Route *route; struct in_addr tmp_addr; gchar address[INET_ADDRSTRLEN + 1]; gchar netmask[INET_ADDRSTRLEN + 1]; gchar gateway[INET_ADDRSTRLEN + 1]; gint metric; route = nm_setting_ip4_config_get_route (page->setting, i); if (!route) continue; tmp_addr.s_addr = nm_ip4_route_get_dest (route); (void) inet_ntop (AF_INET, &tmp_addr, &address[0], sizeof (address)); tmp_addr.s_addr = nm_utils_ip4_prefix_to_netmask (nm_ip4_route_get_prefix (route)); (void) inet_ntop (AF_INET, &tmp_addr, &netmask[0], sizeof (netmask)); tmp_addr.s_addr = nm_ip4_route_get_next_hop (route); (void) inet_ntop (AF_INET, &tmp_addr, &gateway[0], sizeof (gateway)); metric = nm_ip4_route_get_metric (route); add_route_row (page, address, netmask, gateway, metric); } if (nm_setting_ip4_config_get_num_routes (page->setting) == 0) add_empty_route_row (page); gtk_widget_show_all (widget); }
static void add_address_section (CEPageIP6 *page) { GtkWidget *widget; GtkWidget *frame; GtkWidget *list; gint i; widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "address_section")); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (widget), frame); page->address_list = list = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (list), update_header, NULL, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)sort_first_last, NULL, NULL); gtk_container_add (GTK_CONTAINER (frame), list); add_section_toolbar (page, widget, G_CALLBACK (add_empty_address_row)); for (i = 0; i < nm_setting_ip6_config_get_num_addresses (page->setting); i++) { NMIP6Address *addr; const struct in6_addr *tmp_addr; gchar address[INET6_ADDRSTRLEN + 1]; gchar network[INET6_ADDRSTRLEN + 1]; gchar gateway[INET6_ADDRSTRLEN + 1]; addr = nm_setting_ip6_config_get_address (page->setting, i); if (!addr) continue; tmp_addr = nm_ip6_address_get_address (addr); (void) inet_ntop (AF_INET6, tmp_addr, &address[0], sizeof (address)); snprintf (network, sizeof (network), "%u", nm_ip6_address_get_prefix (addr)); tmp_addr = nm_ip6_address_get_gateway (addr); if (tmp_addr && !IN6_IS_ADDR_UNSPECIFIED (tmp_addr)) (void) inet_ntop (AF_INET6, tmp_addr, &gateway[0], sizeof (gateway)); else gateway[0] = '\0'; add_address_row (page, address, network, gateway); } if (nm_setting_ip6_config_get_num_addresses (page->setting) == 0) add_empty_address_row (page); gtk_widget_show_all (widget); }
static void add_address_section (CEPageIP4 *page) { GtkWidget *widget; GtkWidget *frame; GtkWidget *list; gint i; widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "address_section")); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (widget), frame); page->address_list = list = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (list), cc_list_box_update_header_func, NULL, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)sort_first_last, NULL, NULL); gtk_container_add (GTK_CONTAINER (frame), list); add_section_toolbar (page, widget, G_CALLBACK (add_empty_address_row)); for (i = 0; i < nm_setting_ip4_config_get_num_addresses (page->setting); i++) { NMIP4Address *addr; struct in_addr tmp_addr; gchar address[INET_ADDRSTRLEN + 1]; gchar network[INET_ADDRSTRLEN + 1]; gchar gateway[INET_ADDRSTRLEN + 1]; addr = nm_setting_ip4_config_get_address (page->setting, i); if (!addr) continue; tmp_addr.s_addr = nm_ip4_address_get_address (addr); (void) inet_ntop (AF_INET, &tmp_addr, &address[0], sizeof (address)); tmp_addr.s_addr = nm_utils_ip4_prefix_to_netmask (nm_ip4_address_get_prefix (addr)); (void) inet_ntop (AF_INET, &tmp_addr, &network[0], sizeof (network)); tmp_addr.s_addr = nm_ip4_address_get_gateway (addr); (void) inet_ntop (AF_INET, &tmp_addr, &gateway[0], sizeof (gateway)); add_address_row (page, address, network, gateway); } if (nm_setting_ip4_config_get_num_addresses (page->setting) == 0) add_empty_address_row (page); gtk_widget_show_all (widget); }
static void add_dns_section (CEPageIP6 *page) { GtkWidget *widget; GtkWidget *frame; GtkWidget *list; gint i; widget = GTK_WIDGET (gtk_builder_get_object (CE_PAGE (page)->builder, "dns_section")); frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (widget), frame); page->dns_list = list = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (list), update_header, NULL, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (list), (GtkListBoxSortFunc)sort_first_last, NULL, NULL); gtk_container_add (GTK_CONTAINER (frame), list); page->auto_dns = GTK_SWITCH (gtk_builder_get_object (CE_PAGE (page)->builder, "auto_dns_switch")); gtk_switch_set_active (page->auto_dns, !nm_setting_ip6_config_get_ignore_auto_dns (page->setting)); g_signal_connect (page->auto_dns, "notify::active", G_CALLBACK (switch_toggled), page); add_section_toolbar (page, widget, G_CALLBACK (add_empty_dns_row)); for (i = 0; i < nm_setting_ip6_config_get_num_dns (page->setting); i++) { const struct in6_addr *tmp_addr; gchar address[INET6_ADDRSTRLEN + 1]; tmp_addr = nm_setting_ip6_config_get_dns (page->setting, i); (void) inet_ntop (AF_INET, tmp_addr, &address[0], sizeof (address)); add_dns_row (page, address); } if (nm_setting_ip6_config_get_num_dns (page->setting) == 0) add_empty_dns_row (page); gtk_widget_show_all (widget); }