diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2015-05-13 13:39:45 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2015-05-13 13:39:45 +0200 |
commit | d6ac3776f8040098f5febb7e9e0b2859c698d7c4 (patch) | |
tree | 614de72f5a354d100dfbc3e93f4783d23899e9a4 | |
parent | 78c1849b536f86b97dd8591156492999f9260511 (diff) | |
parent | 1d3eff45d2e1eb36edbb5170f321b01bc5fc0484 (diff) | |
download | NetworkManager-d6ac3776f8040098f5febb7e9e0b2859c698d7c4.tar.gz |
ppp: merge branch 'bg/kernel-pppoe-mtu-bgo742939'
https://bugzilla.gnome.org/show_bug.cgi?id=742939
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | src/devices/nm-device-ethernet.c | 23 | ||||
-rw-r--r-- | src/devices/nm-device.c | 2 | ||||
-rw-r--r-- | src/ppp-manager/nm-ppp-manager.c | 45 |
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"); |