summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2015-05-13 13:39:45 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2015-05-13 13:39:45 +0200
commitd6ac3776f8040098f5febb7e9e0b2859c698d7c4 (patch)
tree614de72f5a354d100dfbc3e93f4783d23899e9a4
parent78c1849b536f86b97dd8591156492999f9260511 (diff)
parent1d3eff45d2e1eb36edbb5170f321b01bc5fc0484 (diff)
downloadNetworkManager-d6ac3776f8040098f5febb7e9e0b2859c698d7c4.tar.gz
ppp: merge branch 'bg/kernel-pppoe-mtu-bgo742939'
https://bugzilla.gnome.org/show_bug.cgi?id=742939
-rw-r--r--configure.ac9
-rw-r--r--src/devices/nm-device-ethernet.c23
-rw-r--r--src/devices/nm-device.c2
-rw-r--r--src/ppp-manager/nm-ppp-manager.c45
4 files changed, 36 insertions, 43 deletions
diff --git a/configure.ac b/configure.ac
index 0689fd526a..f51e09e94a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -619,15 +619,6 @@ fi
AC_DEFINE_UNQUOTED(PPPD_PATH, "$PPPD_PATH", [Define to path of pppd binary])
AC_SUBST(PPPD_PATH)
-AC_ARG_WITH(pppoe, AS_HELP_STRING([--with-pppoe=/path/to/pppoe], [path to pppoe binary]))
-if test "x${with_pppoe}" = x; then
- AC_PATH_PROG(PPPOE_PATH, pppoe, [], $PATH:/sbin:/usr/sbin)
-else
- PPPOE_PATH="$with_pppoe"
-fi
-AC_DEFINE_UNQUOTED(PPPOE_PATH, "$PPPOE_PATH", [Define to path of pppoe binary])
-AC_SUBST(PPPOE_PATH)
-
# ModemManager1 with libmm-glib
AC_ARG_WITH(modem-manager-1, AS_HELP_STRING([--with-modem-manager-1], [Enable new ModemManager1 interface support]),,[with_modem_manager_1=auto])
if (test "${with_modem_manager_1}" != "no"); then
diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c
index 3337a106d4..14c9d187bb 100644
--- a/src/devices/nm-device-ethernet.c
+++ b/src/devices/nm-device-ethernet.c
@@ -68,6 +68,7 @@ G_DEFINE_TYPE (NMDeviceEthernet, nm_device_ethernet, NM_TYPE_DEVICE)
#define WIRED_SECRETS_TRIES "wired-secrets-tries"
#define PPPOE_RECONNECT_DELAY 7
+#define PPPOE_ENCAP_OVERHEAD 8 /* 2 bytes for PPP, 6 for PPPoE */
static NMSetting *device_get_setting (NMDevice *device, GType setting_type);
@@ -1239,6 +1240,28 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *reason)
ret = NM_ACT_STAGE_RETURN_POSTPONE;
}
+ /* PPPoE setup */
+ if (nm_connection_is_type (nm_device_get_connection (device),
+ NM_SETTING_PPPOE_SETTING_NAME)) {
+ NMSettingPpp *s_ppp;
+
+ s_ppp = (NMSettingPpp *) device_get_setting (device, NM_TYPE_SETTING_PPP);
+ if (s_ppp) {
+ guint32 mtu = 0, mru = 0, mxu;
+
+ mtu = nm_setting_ppp_get_mtu (s_ppp);
+ mru = nm_setting_ppp_get_mru (s_ppp);
+ mxu = mru > mtu ? mru : mtu;
+ if (mxu) {
+ _LOGD (LOGD_PPP, "set MTU to %u (PPP interface MRU %u, MTU %u)",
+ mxu + PPPOE_ENCAP_OVERHEAD, mru, mtu);
+ nm_platform_link_set_mtu (NM_PLATFORM_GET,
+ nm_device_get_ifindex (device),
+ mxu + PPPOE_ENCAP_OVERHEAD);
+ }
+ }
+ }
+
return ret;
}
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 58898a4b7b..52ba10eef0 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -4218,7 +4218,7 @@ static void
nm_device_set_mtu (NMDevice *self, guint32 mtu)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
- int ifindex = nm_device_get_ifindex (self);
+ int ifindex = nm_device_get_ip_ifindex (self);
if (mtu)
priv->mtu = mtu;
diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
index 17c9456e1b..e27c82b70c 100644
--- a/src/ppp-manager/nm-ppp-manager.c
+++ b/src/ppp-manager/nm-ppp-manager.c
@@ -854,7 +854,7 @@ create_pppd_cmd_line (NMPPPManager *self,
GError **err)
{
NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self);
- const char *pppd_binary = NULL, *pppoe_binary = NULL;
+ const char *pppd_binary = NULL;
NMCmdLine *cmd;
gboolean ppp_debug;
@@ -864,13 +864,6 @@ create_pppd_cmd_line (NMPPPManager *self,
if (!pppd_binary)
return NULL;
- if ( pppoe
- || (adsl && strcmp (nm_setting_adsl_get_protocol (adsl), NM_SETTING_ADSL_PROTOCOL_PPPOE))) {
- pppoe_binary = nm_utils_find_helper ("pppoe", NULL, err);
- if (!pppoe_binary)
- return NULL;
- }
-
/* Create pppd command line */
cmd = nm_cmd_line_new ();
nm_cmd_line_add_string (cmd, pppd_binary);
@@ -898,30 +891,21 @@ create_pppd_cmd_line (NMPPPManager *self,
}
if (pppoe) {
- GString *pppoe_arg;
+ char *dev_str;
const char *pppoe_service;
- char *quoted;
- g_assert (pppoe_binary != NULL);
- pppoe_arg = g_string_new (pppoe_binary);
+ nm_cmd_line_add_string (cmd, "plugin");
+ nm_cmd_line_add_string (cmd, "rp-pppoe.so");
- g_string_append (pppoe_arg, " -I ");
- quoted = g_shell_quote (priv->parent_iface);
- g_string_append (pppoe_arg, quoted);
- g_free (quoted);
+ dev_str = g_strdup_printf ("nic-%s", priv->parent_iface);
+ nm_cmd_line_add_string (cmd, dev_str);
+ g_free (dev_str);
pppoe_service = nm_setting_pppoe_get_service (pppoe);
if (pppoe_service) {
- g_string_append (pppoe_arg, " -S ");
- quoted = g_shell_quote (pppoe_service);
- g_string_append (pppoe_arg, quoted);
- g_free (quoted);
+ nm_cmd_line_add_string (cmd, "rp_pppoe_service");
+ nm_cmd_line_add_string (cmd, pppoe_service);
}
-
- nm_cmd_line_add_string (cmd, "pty");
- nm_cmd_line_add_string (cmd, pppoe_arg->str);
-
- g_string_free (pppoe_arg, TRUE);
} else if (adsl) {
const gchar *protocol = nm_setting_adsl_get_protocol (adsl);
@@ -944,14 +928,9 @@ create_pppd_cmd_line (NMPPPManager *self,
nm_cmd_line_add_string (cmd, "vc-encaps");
} else if (!strcmp (protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE)) {
- char *pppoe_arg;
-
- g_assert (pppoe_binary != NULL);
-
- pppoe_arg = g_strdup_printf ("%s -I %s", pppoe_binary, priv->parent_iface);
- nm_cmd_line_add_string (cmd, "pty");
- nm_cmd_line_add_string (cmd, pppoe_arg);
- g_free (pppoe_arg);
+ nm_cmd_line_add_string (cmd, "plugin");
+ nm_cmd_line_add_string (cmd, "rp-pppoe.so");
+ nm_cmd_line_add_string (cmd, priv->parent_iface);
}
nm_cmd_line_add_string (cmd, "noipdefault");