summaryrefslogtreecommitdiff
path: root/src/ppp-manager
diff options
context:
space:
mode:
authorPantelis Koukousoulas <pktoss@gmail.com>2011-05-26 13:04:59 -0500
committerDan Williams <dcbw@redhat.com>2012-05-18 15:42:56 -0500
commitd125296eb1f5148218fe5ece0cba3623c9692d07 (patch)
tree1db754a05bc518871b694f2412c6f0a2a9e8df08 /src/ppp-manager
parent8039dd30d800d315c3ddedd793d748df7398cabc (diff)
downloadNetworkManager-d125296eb1f5148218fe5ece0cba3623c9692d07.tar.gz
adsl: initial PPPoE support for ADSL devices
Diffstat (limited to 'src/ppp-manager')
-rw-r--r--src/ppp-manager/nm-ppp-manager.c49
1 files changed, 30 insertions, 19 deletions
diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
index 299daa2e0e..08774ce891 100644
--- a/src/ppp-manager/nm-ppp-manager.c
+++ b/src/ppp-manager/nm-ppp-manager.c
@@ -798,7 +798,7 @@ static NMCmdLine *
create_pppd_cmd_line (NMPPPManager *self,
NMSettingPPP *setting,
NMSettingPPPOE *pppoe,
- NMSettingAdsl *adsl_pppoa,
+ NMSettingAdsl *adsl,
const char *ppp_name,
GError **err)
{
@@ -855,26 +855,37 @@ create_pppd_cmd_line (NMPPPManager *self,
nm_cmd_line_add_string (cmd, "rp_pppoe_service");
nm_cmd_line_add_string (cmd, pppoe_service);
}
- } else if (adsl_pppoa) {
- guint32 vpi, vci;
- const gchar *encapsulation;
- gchar *vpivci;
-
- vpi = nm_setting_adsl_get_vpi (adsl_pppoa);
- vci = nm_setting_adsl_get_vci (adsl_pppoa);
- encapsulation = nm_setting_adsl_get_encapsulation (adsl_pppoa);
- vpivci = g_strdup_printf("%d.%d", vpi, vci);
-
- nm_cmd_line_add_string (cmd, "plugin");
- nm_cmd_line_add_string (cmd, "pppoatm.so");
- nm_cmd_line_add_string (cmd, vpivci);
-
- if (!strcmp (encapsulation, "llc"))
- nm_cmd_line_add_string (cmd, "llc-encaps");
+ } else if (adsl) {
+ const gchar *protocol = nm_setting_adsl_get_protocol (adsl);
+
+ if (!strcmp (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOA)) {
+ guint32 vpi = nm_setting_adsl_get_vpi (adsl);
+ guint32 vci = nm_setting_adsl_get_vci (adsl);
+ const char *encaps = nm_setting_adsl_get_encapsulation (adsl);
+ gchar *vpivci;
+
+ nm_cmd_line_add_string (cmd, "plugin");
+ nm_cmd_line_add_string (cmd, "pppoatm.so");
+
+ vpivci = g_strdup_printf("%d.%d", vpi, vci);
+ nm_cmd_line_add_string (cmd, vpivci);
+ g_free (vpivci);
+
+ if (g_strcmp0 (encaps, NM_SETTING_ADSL_ENCAPSULATION_LLC) == 0)
+ nm_cmd_line_add_string (cmd, "llc-encaps");
+ else if (g_strcmp0 (encaps, NM_SETTING_ADSL_ENCAPSULATION_VCMUX) == 0)
+ nm_cmd_line_add_string (cmd, "vc-encaps");
+
+ } else if (!strcmp (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE)) {
+ nm_cmd_line_add_string (cmd, "plugin");
+ nm_cmd_line_add_string (cmd, "rp-pppoe.so");
+ /* FIXME: dynamically figure out the NAS interface name so we can
+ * do more than one br2684 PPPoE connection at the same time.
+ */
+ nm_cmd_line_add_string (cmd, "nas0");
+ }
nm_cmd_line_add_string (cmd, "noipdefault");
-
- g_free (vpivci);
} else {
nm_cmd_line_add_string (cmd, priv->parent_iface);
/* Don't send some random address as the local address */