[gnome-control-center] network: Show DNS6 parameters in details and connection editor
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Show DNS6 parameters in details and connection editor
- Date: Mon, 1 Feb 2021 20:21:17 +0000 (UTC)
commit ab443a02c1060f56f75e54de8957c4aa36396fc2
Author: treysis <treysis gmx net>
Date: Mon Jan 11 22:13:18 2021 +0100
network: Show DNS6 parameters in details and connection editor
Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1231
panels/network/connection-editor/ce-page-details.c | 51 ++++++++++++++++-----
panels/network/connection-editor/details-page.ui | 53 +++++++++++++++++++---
panels/network/connection-editor/ip4-page.ui | 2 +-
panels/network/connection-editor/ip6-page.ui | 2 +-
panels/network/net-device-ethernet.c | 18 +++++++-
panels/network/net-device-mobile.c | 49 +++++++++++++++-----
panels/network/network-mobile.ui | 40 +++++++++++++++-
7 files changed, 180 insertions(+), 35 deletions(-)
---
diff --git a/panels/network/connection-editor/ce-page-details.c
b/panels/network/connection-editor/ce-page-details.c
index 542b7b8eb..27433efe2 100644
--- a/panels/network/connection-editor/ce-page-details.c
+++ b/panels/network/connection-editor/ce-page-details.c
@@ -34,8 +34,10 @@ struct _CEPageDetails
GtkCheckButton *all_user_check;
GtkCheckButton *auto_connect_check;
- GtkLabel *dns_heading_label;
- GtkLabel *dns_label;
+ GtkLabel *dns4_heading_label;
+ GtkLabel *dns4_label;
+ GtkLabel *dns6_heading_label;
+ GtkLabel *dns6_label;
GtkButton *forget_button;
GtkLabel *freq_heading_label;
GtkLabel *freq_label;
@@ -243,6 +245,8 @@ connect_details_page (CEPageDetails *self)
gboolean device_is_active;
NMIPConfig *ipv4_config = NULL, *ipv6_config = NULL;
gboolean have_ipv4_address = FALSE, have_ipv6_address = FALSE;
+ gboolean have_dns4 = FALSE, have_dns6 = FALSE;
+
sc = nm_connection_get_setting_connection (self->connection);
type = nm_setting_connection_get_connection_type (sc);
@@ -341,7 +345,7 @@ connect_details_page (CEPageDetails *self)
if (ipv4_config != NULL) {
GPtrArray *addresses;
const gchar *ipv4_text = NULL;
- g_autofree gchar *dns_text = NULL;
+ g_autofree gchar *ip4_dns = NULL;
const gchar *route_text;
addresses = nm_ip_config_get_addresses (ipv4_config);
@@ -352,10 +356,13 @@ connect_details_page (CEPageDetails *self)
gtk_widget_set_visible (GTK_WIDGET (self->ipv4_label), ipv4_text != NULL);
have_ipv4_address = ipv4_text != NULL;
- dns_text = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv4_config));
- gtk_label_set_label (self->dns_label, dns_text);
- gtk_widget_set_visible (GTK_WIDGET (self->dns_heading_label), dns_text != NULL);
- gtk_widget_set_visible (GTK_WIDGET (self->dns_label), dns_text != NULL);
+ ip4_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv4_config));
+ if (!*ip4_dns)
+ ip4_dns = NULL;
+ gtk_label_set_label (self->dns4_label, ip4_dns);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns4_heading_label), ip4_dns != NULL);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns4_label), ip4_dns != NULL);
+ have_dns4 = ip4_dns != NULL;
route_text = nm_ip_config_get_gateway (ipv4_config);
gtk_label_set_label (self->route_label, route_text);
@@ -364,8 +371,8 @@ connect_details_page (CEPageDetails *self)
} else {
gtk_widget_hide (GTK_WIDGET (self->ipv4_heading_label));
gtk_widget_hide (GTK_WIDGET (self->ipv4_label));
- gtk_widget_hide (GTK_WIDGET (self->dns_heading_label));
- gtk_widget_hide (GTK_WIDGET (self->dns_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns4_heading_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns4_label));
gtk_widget_hide (GTK_WIDGET (self->route_heading_label));
gtk_widget_hide (GTK_WIDGET (self->route_label));
}
@@ -375,6 +382,7 @@ connect_details_page (CEPageDetails *self)
if (ipv6_config != NULL) {
GPtrArray *addresses;
const gchar *ipv6_text = NULL;
+ g_autofree gchar *ip6_dns = NULL;
addresses = nm_ip_config_get_addresses (ipv6_config);
if (addresses->len > 0)
@@ -383,9 +391,19 @@ connect_details_page (CEPageDetails *self)
gtk_widget_set_visible (GTK_WIDGET (self->ipv6_heading_label), ipv6_text != NULL);
gtk_widget_set_visible (GTK_WIDGET (self->ipv6_label), ipv6_text != NULL);
have_ipv6_address = ipv6_text != NULL;
+
+ ip6_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv6_config));
+ if (!*ip6_dns)
+ ip6_dns = NULL;
+ gtk_label_set_label (self->dns6_label, ip6_dns);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns6_heading_label), ip6_dns != NULL);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns6_label), ip6_dns != NULL);
+ have_dns6 = ip6_dns != NULL;
} else {
gtk_widget_hide (GTK_WIDGET (self->ipv6_heading_label));
gtk_widget_hide (GTK_WIDGET (self->ipv6_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns6_heading_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns6_label));
}
if (have_ipv4_address && have_ipv6_address) {
@@ -397,6 +415,15 @@ connect_details_page (CEPageDetails *self)
gtk_label_set_label (self->ipv6_heading_label, _("IP Address"));
}
+ if (have_dns4 && have_dns6) {
+ gtk_label_set_label (self->dns4_heading_label, _("DNS4"));
+ gtk_label_set_label (self->dns6_heading_label, _("DNS6"));
+ }
+ else {
+ gtk_label_set_label (self->dns4_heading_label, _("DNS"));
+ gtk_label_set_label (self->dns6_heading_label, _("DNS"));
+ }
+
if (!device_is_active && self->connection)
update_last_used (self, self->connection);
else {
@@ -470,8 +497,10 @@ ce_page_details_class_init (CEPageDetailsClass *klass)
gtk_widget_class_bind_template_child (widget_class, CEPageDetails, all_user_check);
gtk_widget_class_bind_template_child (widget_class, CEPageDetails, auto_connect_check);
- gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns_heading_label);
- gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns_label);
+ gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns4_heading_label);
+ gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns4_label);
+ gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns6_heading_label);
+ gtk_widget_class_bind_template_child (widget_class, CEPageDetails, dns6_label);
gtk_widget_class_bind_template_child (widget_class, CEPageDetails, forget_button);
gtk_widget_class_bind_template_child (widget_class, CEPageDetails, freq_heading_label);
gtk_widget_class_bind_template_child (widget_class, CEPageDetails, freq_label);
diff --git a/panels/network/connection-editor/details-page.ui
b/panels/network/connection-editor/details-page.ui
index fba3aa7be..7dfabbe6d 100644
--- a/panels/network/connection-editor/details-page.ui
+++ b/panels/network/connection-editor/details-page.ui
@@ -191,13 +191,13 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="dns_heading_label">
+ <object class="GtkLabel" id="dns4_heading_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">DNS</property>
- <property name="mnemonic_widget">dns_label</property>
+ <property name="mnemonic_widget">dns4_label</property>
<style>
<class name="dim-label"/>
</style>
@@ -209,6 +209,25 @@
<property name="height">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="dns6_heading_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0</property>
+ <property name="label" translatable="yes">DNS</property>
+ <property name="mnemonic_widget">dns6_label</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">9</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
<child>
<object class="GtkLabel" id="last_used_heading_label">
<property name="visible">True</property>
@@ -222,7 +241,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">9</property>
+ <property name="top_attach">10</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
@@ -334,7 +353,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="dns_label">
+ <object class="GtkLabel" id="dns4_label">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="xalign">0</property>
@@ -353,6 +372,26 @@
<property name="height">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="dns6_label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="label">::1</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="hexpand">True</property>
+ <property name="max-width-chars">50</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">9</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
<child>
<object class="GtkLabel" id="last_used_label">
<property name="visible">True</property>
@@ -366,7 +405,7 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">9</property>
+ <property name="top_attach">10</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
@@ -385,7 +424,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">10</property>
+ <property name="top_attach">11</property>
<property name="width">2</property>
<property name="height">1</property>
</packing>
@@ -402,7 +441,7 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">11</property>
+ <property name="top_attach">12</property>
<property name="width">2</property>
<property name="height">1</property>
</packing>
diff --git a/panels/network/connection-editor/ip4-page.ui b/panels/network/connection-editor/ip4-page.ui
index 60f9b30c7..c390eb8dc 100644
--- a/panels/network/connection-editor/ip4-page.ui
+++ b/panels/network/connection-editor/ip4-page.ui
@@ -203,7 +203,7 @@
<property name="margin_top">24</property>
<property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="dns_label">
+ <object class="GtkLabel" id="dns4_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
diff --git a/panels/network/connection-editor/ip6-page.ui b/panels/network/connection-editor/ip6-page.ui
index ed3f21141..2234cd1f4 100644
--- a/panels/network/connection-editor/ip6-page.ui
+++ b/panels/network/connection-editor/ip6-page.ui
@@ -217,7 +217,7 @@
<property name="margin_top">24</property>
<property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="dns_label">
+ <object class="GtkLabel" id="dns6_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
diff --git a/panels/network/net-device-ethernet.c b/panels/network/net-device-ethernet.c
index 73adb62fc..f7cd6ae6b 100644
--- a/panels/network/net-device-ethernet.c
+++ b/panels/network/net-device-ethernet.c
@@ -116,6 +116,7 @@ add_details (GtkWidget *details, NMDevice *device, NMConnection *connection)
const gchar *ip4_route = NULL;
g_autofree gchar *ip4_dns = NULL;
const gchar *ip6_address = NULL;
+ g_autofree gchar *ip6_dns = NULL;
gint i = 0;
ip4_config = nm_device_get_ip4_config (device);
@@ -128,6 +129,8 @@ add_details (GtkWidget *details, NMDevice *device, NMConnection *connection)
ip4_route = nm_ip_config_get_gateway (ip4_config);
ip4_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ip4_config));
+ if (!*ip4_dns)
+ ip4_dns = NULL;
}
ip6_config = nm_device_get_ip6_config (device);
if (ip6_config) {
@@ -136,6 +139,10 @@ add_details (GtkWidget *details, NMDevice *device, NMConnection *connection)
addresses = nm_ip_config_get_addresses (ip6_config);
if (addresses->len > 0)
ip6_address = nm_ip_address_get_address (g_ptr_array_index (addresses, 0));
+
+ ip6_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ip6_config));
+ if (!*ip6_dns)
+ ip6_dns = NULL;
}
if (ip4_address && ip6_address) {
@@ -144,15 +151,22 @@ add_details (GtkWidget *details, NMDevice *device, NMConnection *connection)
} else if (ip4_address) {
add_details_row (details, i++, _("IP Address"), ip4_address);
} else if (ip6_address) {
- add_details_row (details, i++, _("IPv6 Address"), ip6_address);
+ add_details_row (details, i++, _("IP Address"), ip6_address);
}
add_details_row (details, i++, _("Hardware Address"), nm_device_get_hw_address (device));
if (ip4_route)
add_details_row (details, i++, _("Default Route"), ip4_route);
- if (ip4_dns)
+
+ if (ip4_dns && ip6_dns) {
+ add_details_row (details, i++, _("DNS4"), ip4_dns);
+ add_details_row (details, i++, _("DNS6"), ip6_dns);
+ } else if (ip4_dns) {
add_details_row (details, i++, _("DNS"), ip4_dns);
+ } else if (ip6_dns) {
+ add_details_row (details, i++, _("DNS"), ip6_dns);
+ }
if (nm_device_get_state (device) != NM_DEVICE_STATE_ACTIVATED) {
g_autofree gchar *last_used = NULL;
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index 0dd2ee305..34eb86241 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -41,8 +41,10 @@ struct _NetDeviceMobile
GtkLabel *device_label;
GtkSwitch *device_off_switch;
- GtkLabel *dns_heading_label;
- GtkLabel *dns_label;
+ GtkLabel *dns4_heading_label;
+ GtkLabel *dns4_label;
+ GtkLabel *dns6_heading_label;
+ GtkLabel *dns6_label;
GtkLabel *imei_heading_label;
GtkLabel *imei_label;
GtkLabel *ipv4_heading_label;
@@ -349,6 +351,7 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
g_autofree gchar *status = NULL;
NMIPConfig *ipv4_config = NULL, *ipv6_config = NULL;
gboolean have_ipv4_address = FALSE, have_ipv6_address = FALSE;
+ gboolean have_dns4 = FALSE, have_dns6 = FALSE;
/* set up the device on/off switch */
gtk_widget_show (GTK_WIDGET (self->device_off_switch));
@@ -380,7 +383,7 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
if (ipv4_config != NULL) {
GPtrArray *addresses;
const gchar *ipv4_text = NULL;
- g_autofree gchar *dns_text = NULL;
+ g_autofree gchar *ip4_dns = NULL;
const gchar *route_text;
addresses = nm_ip_config_get_addresses (ipv4_config);
@@ -391,10 +394,13 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
gtk_widget_set_visible (GTK_WIDGET (self->ipv4_label), ipv4_text != NULL);
have_ipv4_address = ipv4_text != NULL;
- dns_text = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv4_config));
- gtk_label_set_label (self->dns_label, dns_text);
- gtk_widget_set_visible (GTK_WIDGET (self->dns_heading_label), dns_text != NULL);
- gtk_widget_set_visible (GTK_WIDGET (self->dns_label), dns_text != NULL);
+ ip4_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv4_config));
+ if (!*ip4_dns)
+ ip4_dns = NULL;
+ gtk_label_set_label (self->dns4_label, ip4_dns);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns4_heading_label), ip4_dns != NULL);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns4_label), ip4_dns != NULL);
+ have_dns4 = ip4_dns != NULL;
route_text = nm_ip_config_get_gateway (ipv4_config);
gtk_label_set_label (self->route_label, route_text);
@@ -403,8 +409,8 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
} else {
gtk_widget_hide (GTK_WIDGET (self->ipv4_heading_label));
gtk_widget_hide (GTK_WIDGET (self->ipv4_label));
- gtk_widget_hide (GTK_WIDGET (self->dns_heading_label));
- gtk_widget_hide (GTK_WIDGET (self->dns_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns4_heading_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns4_label));
gtk_widget_hide (GTK_WIDGET (self->route_heading_label));
gtk_widget_hide (GTK_WIDGET (self->route_label));
}
@@ -413,6 +419,7 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
if (ipv6_config != NULL) {
GPtrArray *addresses;
const gchar *ipv6_text = NULL;
+ g_autofree gchar *ip6_dns = NULL;
addresses = nm_ip_config_get_addresses (ipv6_config);
if (addresses->len > 0)
@@ -421,9 +428,19 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
gtk_widget_set_visible (GTK_WIDGET (self->ipv6_heading_label), ipv6_text != NULL);
gtk_widget_set_visible (GTK_WIDGET (self->ipv6_label), ipv6_text != NULL);
have_ipv6_address = ipv6_text != NULL;
+
+ ip6_dns = g_strjoinv (" ", (char **) nm_ip_config_get_nameservers (ipv6_config));
+ if (!*ip6_dns)
+ ip6_dns = NULL;
+ gtk_label_set_label (self->dns6_label, ip6_dns);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns6_heading_label), ip6_dns != NULL);
+ gtk_widget_set_visible (GTK_WIDGET (self->dns6_label), ip6_dns != NULL);
+ have_dns6 = ip6_dns != NULL;
} else {
gtk_widget_hide (GTK_WIDGET (self->ipv6_heading_label));
gtk_widget_hide (GTK_WIDGET (self->ipv6_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns6_heading_label));
+ gtk_widget_hide (GTK_WIDGET (self->dns6_label));
}
if (have_ipv4_address && have_ipv6_address) {
@@ -434,6 +451,14 @@ nm_device_mobile_refresh_ui (NetDeviceMobile *self)
gtk_label_set_label (self->ipv4_heading_label, _("IP Address"));
gtk_label_set_label (self->ipv6_heading_label, _("IP Address"));
}
+
+ if (have_dns4 && have_dns6) {
+ gtk_label_set_label (self->dns4_heading_label, _("DNS4"));
+ gtk_label_set_label (self->dns6_heading_label, _("DNS6"));
+ } else {
+ gtk_label_set_label (self->dns4_heading_label, _("DNS"));
+ gtk_label_set_label (self->dns6_heading_label, _("DNS"));
+ }
}
static void
@@ -738,8 +763,10 @@ net_device_mobile_class_init (NetDeviceMobileClass *klass)
gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, device_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, device_off_switch);
- gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns_heading_label);
- gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns_label);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns4_heading_label);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns4_label);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns6_heading_label);
+ gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, dns6_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, imei_heading_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, imei_label);
gtk_widget_class_bind_template_child (widget_class, NetDeviceMobile, ipv4_heading_label);
diff --git a/panels/network/network-mobile.ui b/panels/network/network-mobile.ui
index fa1ad59cc..6f8340b74 100644
--- a/panels/network/network-mobile.ui
+++ b/panels/network/network-mobile.ui
@@ -141,7 +141,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="dns_label">
+ <object class="GtkLabel" id="dns4_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
@@ -158,6 +158,24 @@
<property name="height">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="dns6_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="max-width-chars">50</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">8</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
@@ -227,7 +245,7 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="dns_heading_label">
+ <object class="GtkLabel" id="dns4_heading_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
@@ -244,6 +262,24 @@
<property name="height">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="dns6_heading_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0</property>
+ <property name="label" translatable="yes">DNS</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">8</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
<child>
<object class="GtkLabel" id="network_label">
<property name="visible">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]