+/**
+ * g_network_service_get_scheme:
+ * @srv: a #GNetworkService
+ *
+ * Get's the URI scheme used to resolve proxies. By default, the service name
+ * is used as scheme.
+ *
+ * Returns: @srv's scheme name
+ *
+ * Since: 2.26
+ */
+const gchar *
+g_network_service_get_scheme (GNetworkService *srv)
+{
+ g_return_val_if_fail (G_IS_NETWORK_SERVICE (srv), NULL);
+
+ if (srv->priv->scheme)
+ return srv->priv->scheme;
+ else
+ return srv->priv->service;
+}
+
+/**
+ * g_network_service_set_scheme:
+ * @srv: a #GNetworkService
+ * @scheme: a URI scheme
+ *
+ * Set's the URI scheme used to resolve proxies. By default, the service name
+ * is used as scheme.
+ *
+ * Since: 2.26
+ */
+void
+g_network_service_set_scheme (GNetworkService *srv,
+ const gchar *scheme)
+{
+ g_return_if_fail (G_IS_NETWORK_SERVICE (srv));
+
+ g_free (srv->priv->scheme);
+ srv->priv->scheme = g_strdup (scheme);
+
+ g_object_notify (G_OBJECT (srv), "scheme");
+}
+
+static GList *
+g_network_service_fallback_targets (GNetworkService *srv)
+{
+ GSrvTarget *target;
+ struct servent *entry;
+ guint16 port;
+
+ entry = getservbyname (srv->priv->service, "tcp");
+ port = entry ? g_ntohs (entry->s_port) : 0;
+#ifdef HAVE_ENDSERVENT
+ endservent ();
+#endif
+
+ if (entry == NULL)
+ return NULL;
+
+ target = g_srv_target_new (srv->priv->domain, port, 0, 0);
+ return g_list_append (NULL, target);
+}
+