* [PATCH] ppp: change MTU on TUN device when MRU option received
@ 2010-04-22 21:15 Kristen Carlson Accardi
2010-04-22 22:10 ` Denis Kenzior
0 siblings, 1 reply; 4+ messages in thread
From: Kristen Carlson Accardi @ 2010-04-22 21:15 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 829 bytes --]
---
gatchat/ppp_net.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/gatchat/ppp_net.c b/gatchat/ppp_net.c
index c1f2eb4..fc1f9fb 100644
--- a/gatchat/ppp_net.c
+++ b/gatchat/ppp_net.c
@@ -50,10 +50,26 @@ struct ppp_net {
void ppp_net_set_mtu(struct ppp_net *net, guint16 mtu)
{
+ struct ifreq ifr;
+ int sock;
+
if (net == NULL)
return;
net->mtu = mtu;
+
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock < 0)
+ return;
+
+ memset(&ifr, 0, sizeof(ifr));
+
+ strncpy(ifr.ifr_name, net->if_name, sizeof(ifr.ifr_name));
+ ifr.ifr_mtu = mtu;
+ if (ioctl(sock, SIOCSIFMTU, (caddr_t) &ifr) < 0)
+ g_printerr("Unable to change MTU\n");
+
+ close(sock);
}
void ppp_net_process_packet(struct ppp_net *net, guint8 *packet)
--
1.6.6.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] ppp: change MTU on TUN device when MRU option received
2010-04-22 21:15 [PATCH] ppp: change MTU on TUN device when MRU option received Kristen Carlson Accardi
@ 2010-04-22 22:10 ` Denis Kenzior
0 siblings, 0 replies; 4+ messages in thread
From: Denis Kenzior @ 2010-04-22 22:10 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1196 bytes --]
Hi Kristen,
> ---
> gatchat/ppp_net.c | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/gatchat/ppp_net.c b/gatchat/ppp_net.c
> index c1f2eb4..fc1f9fb 100644
> --- a/gatchat/ppp_net.c
> +++ b/gatchat/ppp_net.c
> @@ -50,10 +50,26 @@ struct ppp_net {
>
> void ppp_net_set_mtu(struct ppp_net *net, guint16 mtu)
> {
> + struct ifreq ifr;
> + int sock;
> +
> if (net == NULL)
> return;
>
> net->mtu = mtu;
> +
> + sock = socket(AF_INET, SOCK_DGRAM, 0);
> + if (sock < 0)
> + return;
> +
I think it would be a good idea to make this function return a gboolean
indicating success or failure instead of silently returning.
> + memset(&ifr, 0, sizeof(ifr));
> +
> + strncpy(ifr.ifr_name, net->if_name, sizeof(ifr.ifr_name));
> + ifr.ifr_mtu = mtu;
> + if (ioctl(sock, SIOCSIFMTU, (caddr_t) &ifr) < 0)
> + g_printerr("Unable to change MTU\n");
Generally the preferred style is to not have a space after memset but do have
space before the if.
> +
> + close(sock);
> }
>
> void ppp_net_process_packet(struct ppp_net *net, guint8 *packet)
>
Otherwise patch looks good.
Regards,
-Denis
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] ppp: change MTU on TUN device when MRU option received
@ 2010-04-22 22:49 Kristen Carlson Accardi
2010-04-22 23:00 ` Denis Kenzior
0 siblings, 1 reply; 4+ messages in thread
From: Kristen Carlson Accardi @ 2010-04-22 22:49 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2032 bytes --]
---
gatchat/gatppp.c | 3 ++-
gatchat/ppp.h | 2 +-
gatchat/ppp_net.c | 23 ++++++++++++++++++++---
3 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c
index 705a298..fc6769c 100644
--- a/gatchat/gatppp.c
+++ b/gatchat/gatppp.c
@@ -411,7 +411,8 @@ void ppp_net_up_notify(GAtPPP *ppp, const char *ip,
{
ppp->net = ppp_net_new(ppp);
- ppp_net_set_mtu(ppp->net, ppp->mtu);
+ if (ppp_net_set_mtu(ppp->net, ppp->mtu) == FALSE)
+ g_printerr("Unable to set MTU\n");
if (ppp->connect_cb == NULL)
return;
diff --git a/gatchat/ppp.h b/gatchat/ppp.h
index 07483a9..c7e6d24 100644
--- a/gatchat/ppp.h
+++ b/gatchat/ppp.h
@@ -103,7 +103,7 @@ struct ppp_net *ppp_net_new(GAtPPP *ppp);
const char *ppp_net_get_interface(struct ppp_net *net);
void ppp_net_process_packet(struct ppp_net *net, guint8 *packet);
void ppp_net_free(struct ppp_net *net);
-void ppp_net_set_mtu(struct ppp_net *net, guint16 mtu);
+gboolean ppp_net_set_mtu(struct ppp_net *net, guint16 mtu);
/* PPP functions related to main GAtPPP object */
void ppp_debug(GAtPPP *ppp, const char *str);
diff --git a/gatchat/ppp_net.c b/gatchat/ppp_net.c
index c1f2eb4..b8b3355 100644
--- a/gatchat/ppp_net.c
+++ b/gatchat/ppp_net.c
@@ -48,12 +48,29 @@ struct ppp_net {
gint mtu;
};
-void ppp_net_set_mtu(struct ppp_net *net, guint16 mtu)
+gboolean ppp_net_set_mtu(struct ppp_net *net, guint16 mtu)
{
- if (net == NULL)
- return;
+ struct ifreq ifr;
+ int sock;
+ int rc;
+
+ if (net == NULL || mtu >= MAX_PACKET)
+ return FALSE;
net->mtu = mtu;
+
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock < 0)
+ return FALSE;
+
+ memset(&ifr, 0, sizeof(ifr));
+ strncpy(ifr.ifr_name, net->if_name, sizeof(ifr.ifr_name));
+ ifr.ifr_mtu = mtu;
+
+ rc = ioctl(sock, SIOCSIFMTU, (caddr_t) &ifr);
+
+ close(sock);
+ return (rc < 0) ? FALSE: TRUE;
}
void ppp_net_process_packet(struct ppp_net *net, guint8 *packet)
--
1.6.6.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-04-22 23:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-22 21:15 [PATCH] ppp: change MTU on TUN device when MRU option received Kristen Carlson Accardi
2010-04-22 22:10 ` Denis Kenzior
-- strict thread matches above, loose matches on Subject: below --
2010-04-22 22:49 Kristen Carlson Accardi
2010-04-22 23:00 ` Denis Kenzior
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.