All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
@ 2016-08-20 15:52 fgao
  2016-08-21 22:23 ` David Miller
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: fgao @ 2016-08-20 15:52 UTC (permalink / raw)
  To: paulus, davem, g.nault, philipp, netdev; +Cc: gfree.wind, Gao Feng

From: Gao Feng <fgao@ikuai8.com>

Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
0x03, and 2 separately.

Signed-off-by: Gao Feng <fgao@ikuai8.com>
---
 v3: Modify the subject;
 v2: Only replace the literal number with macros according to Guillaume's advice
 v1: Inital patch

 net/l2tp/l2tp_ppp.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index d9560aa..65e2fd6 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
 	if (!pskb_may_pull(skb, 2))
 		return 1;
 
-	if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
+	if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
 		skb_pull(skb, 2);
 
 	return 0;
@@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
 static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
 			    size_t total_len)
 {
-	static const unsigned char ppph[2] = { 0xff, 0x03 };
+	static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
 	struct sock *sk = sock->sk;
 	struct sk_buff *skb;
 	int error;
@@ -369,7 +369,7 @@ error:
  */
 static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
 {
-	static const u8 ppph[2] = { 0xff, 0x03 };
+	static const u8 ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
 	struct sock *sk = (struct sock *) chan->private;
 	struct sock *sk_tun;
 	struct l2tp_session *session;
@@ -440,7 +440,7 @@ static void pppol2tp_session_close(struct l2tp_session *session)
 	BUG_ON(session->magic != L2TP_SESSION_MAGIC);
 
 	if (sock) {
-		inet_shutdown(sock, 2);
+		inet_shutdown(sock, SEND_SHUTDOWN);
 		/* Don't let the session go away before our socket does */
 		l2tp_session_inc_refcount(session);
 	}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-20 15:52 [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number fgao
@ 2016-08-21 22:23 ` David Miller
  2016-08-21 22:36 ` Philp Prindeville
  2016-08-22 10:07 ` Guillaume Nault
  2 siblings, 0 replies; 11+ messages in thread
From: David Miller @ 2016-08-21 22:23 UTC (permalink / raw)
  To: fgao; +Cc: paulus, g.nault, philipp, netdev, gfree.wind

From: fgao@ikuai8.com
Date: Sat, 20 Aug 2016 23:52:27 +0800

> From: Gao Feng <fgao@ikuai8.com>
> 
> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
> 0x03, and 2 separately.
> 
> Signed-off-by: Gao Feng <fgao@ikuai8.com>

Applied.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-20 15:52 [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number fgao
  2016-08-21 22:23 ` David Miller
@ 2016-08-21 22:36 ` Philp Prindeville
  2016-08-21 22:49   ` David Miller
                     ` (2 more replies)
  2016-08-22 10:07 ` Guillaume Nault
  2 siblings, 3 replies; 11+ messages in thread
From: Philp Prindeville @ 2016-08-21 22:36 UTC (permalink / raw)
  To: fgao, paulus, davem, g.nault, netdev; +Cc: gfree.wind

Inline


On 08/20/2016 09:52 AM, fgao@48lvckh6395k16k5.yundunddos.com wrote:
> From: Gao Feng <fgao@ikuai8.com>
>
> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
> 0x03, and 2 separately.
>
> Signed-off-by: Gao Feng <fgao@ikuai8.com>
> ---
>   v3: Modify the subject;
>   v2: Only replace the literal number with macros according to Guillaume's advice
>   v1: Inital patch
>
>   net/l2tp/l2tp_ppp.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
> index d9560aa..65e2fd6 100644
> --- a/net/l2tp/l2tp_ppp.c
> +++ b/net/l2tp/l2tp_ppp.c
> @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
>   	if (!pskb_may_pull(skb, 2))
>   		return 1;
>   
> -	if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
> +	if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))

This should have used PPP_ADDRESS() and PPP_CONTROL() here.

>   		skb_pull(skb, 2);

This magic number should go away.

>   
>   	return 0;
> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
>   static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
>   			    size_t total_len)
>   {
> -	static const unsigned char ppph[2] = { 0xff, 0x03 };
> +	static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};

PPP has a 4-byte header.  Where's the protocol value?

>   	struct sock *sk = sock->sk;
>   	struct sk_buff *skb;
>   	int error;
> @@ -369,7 +369,7 @@ error:
>    */
>   static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
>   {
> -	static const u8 ppph[2] = { 0xff, 0x03 };
> +	static const u8 ppph[2] = {PPP_ALLSTATIONS, PPP_UI};

Same as above.


>   	struct sock *sk = (struct sock *) chan->private;
>   	struct sock *sk_tun;
>   	struct l2tp_session *session;
> @@ -440,7 +440,7 @@ static void pppol2tp_session_close(struct l2tp_session *session)
>   	BUG_ON(session->magic != L2TP_SESSION_MAGIC);
>   
>   	if (sock) {
> -		inet_shutdown(sock, 2);
> +		inet_shutdown(sock, SEND_SHUTDOWN);
>   		/* Don't let the session go away before our socket does */
>   		l2tp_session_inc_refcount(session);
>   	}

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-21 22:36 ` Philp Prindeville
@ 2016-08-21 22:49   ` David Miller
  2016-08-22  0:13   ` Feng Gao
  2016-08-22  9:48   ` Guillaume Nault
  2 siblings, 0 replies; 11+ messages in thread
From: David Miller @ 2016-08-21 22:49 UTC (permalink / raw)
  To: philipp; +Cc: fgao, paulus, g.nault, netdev, gfree.wind

From: Philp Prindeville <philipp@redfish-solutions.com>
Date: Sun, 21 Aug 2016 16:36:52 -0600

> Inline

Sorry, I applied this already, I'll revert it.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-21 22:36 ` Philp Prindeville
  2016-08-21 22:49   ` David Miller
@ 2016-08-22  0:13   ` Feng Gao
  2016-08-22  9:54     ` Guillaume Nault
  2016-08-22  9:48   ` Guillaume Nault
  2 siblings, 1 reply; 11+ messages in thread
From: Feng Gao @ 2016-08-22  0:13 UTC (permalink / raw)
  To: Philp Prindeville
  Cc: Gao Feng, paulus, David S. Miller, Guillaume Nault,
	Linux Kernel Network Developers

inline

On Mon, Aug 22, 2016 at 6:36 AM, Philp Prindeville
<philipp@redfish-solutions.com> wrote:
> Inline
>
>
> On 08/20/2016 09:52 AM, fgao@48lvckh6395k16k5.yundunddos.com wrote:
>>
>> From: Gao Feng <fgao@ikuai8.com>
>>
>> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
>> 0x03, and 2 separately.
>>
>> Signed-off-by: Gao Feng <fgao@ikuai8.com>
>> ---
>>   v3: Modify the subject;
>>   v2: Only replace the literal number with macros according to Guillaume's
>> advice
>>   v1: Inital patch
>>
>>   net/l2tp/l2tp_ppp.c | 8 ++++----
>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
>> index d9560aa..65e2fd6 100644
>> --- a/net/l2tp/l2tp_ppp.c
>> +++ b/net/l2tp/l2tp_ppp.c
>> @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff
>> *skb)
>>         if (!pskb_may_pull(skb, 2))
>>                 return 1;
>>   -     if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
>> +       if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
>
>
> This should have used PPP_ADDRESS() and PPP_CONTROL() here.

In my initial patch, I replace them with PPP_ADDRESS() and PPP_CONTROL.
But Guillaume thought it was not clear as before.
So I revert it.

>
>>                 skb_pull(skb, 2);
>
>
> This magic number should go away.

Same as above.

>
>>         return 0;
>> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct
>> l2tp_session *session)
>>   static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
>>                             size_t total_len)
>>   {
>> -       static const unsigned char ppph[2] = { 0xff, 0x03 };
>> +       static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
>
>
> PPP has a 4-byte header.  Where's the protocol value?

In the original code, I fail to find the code which is used to fill
the protocol value.
So I keep the two bytes header. And I thought the protocol value may be filled
by the upper layer.

>
>>         struct sock *sk = sock->sk;
>>         struct sk_buff *skb;
>>         int error;
>> @@ -369,7 +369,7 @@ error:
>>    */
>>   static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
>>   {
>> -       static const u8 ppph[2] = { 0xff, 0x03 };
>> +       static const u8 ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
>
>
> Same as above.
>
>
>
>>         struct sock *sk = (struct sock *) chan->private;
>>         struct sock *sk_tun;
>>         struct l2tp_session *session;
>> @@ -440,7 +440,7 @@ static void pppol2tp_session_close(struct l2tp_session
>> *session)
>>         BUG_ON(session->magic != L2TP_SESSION_MAGIC);
>>         if (sock) {
>> -               inet_shutdown(sock, 2);
>> +               inet_shutdown(sock, SEND_SHUTDOWN);
>>                 /* Don't let the session go away before our socket does */
>>                 l2tp_session_inc_refcount(session);
>>         }
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-21 22:36 ` Philp Prindeville
  2016-08-21 22:49   ` David Miller
  2016-08-22  0:13   ` Feng Gao
@ 2016-08-22  9:48   ` Guillaume Nault
  2016-08-22 10:29     ` Feng Gao
  2 siblings, 1 reply; 11+ messages in thread
From: Guillaume Nault @ 2016-08-22  9:48 UTC (permalink / raw)
  To: Philp Prindeville; +Cc: fgao, paulus, davem, netdev, gfree.wind

On Sun, Aug 21, 2016 at 04:36:52PM -0600, Philp Prindeville wrote:
> Inline
> 
> 
> On 08/20/2016 09:52 AM, fgao@48lvckh6395k16k5.yundunddos.com wrote:
> > From: Gao Feng <fgao@ikuai8.com>
> > 
> > Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
> > 0x03, and 2 separately.
> > 
> > Signed-off-by: Gao Feng <fgao@ikuai8.com>
> > ---
> >   v3: Modify the subject;
> >   v2: Only replace the literal number with macros according to Guillaume's advice
> >   v1: Inital patch
> > 
> >   net/l2tp/l2tp_ppp.c | 8 ++++----
> >   1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
> > index d9560aa..65e2fd6 100644
> > --- a/net/l2tp/l2tp_ppp.c
> > +++ b/net/l2tp/l2tp_ppp.c
> > @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
> >   	if (!pskb_may_pull(skb, 2))
> >   		return 1;
> > -	if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
> > +	if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
> 
> This should have used PPP_ADDRESS() and PPP_CONTROL() here.
>
Then please justify how would that make the code more readable.
We're not trying to interpret a known valid PPP header here.

> >   		skb_pull(skb, 2);
> 
> This magic number should go away.
>
Again, this is *not* a magic number. We've explicitely accessed the
first _two_ header bytes and want to skip them.
pskb_may_pull(2), ->data[0], ->data[1] and skb_pull(2) all go together.

There's even a nice comment telling you what is done and why:
	/* Skip PPP header, if present.	 In testing, Microsoft L2TP clients
	 * don't send the PPP header (PPP header compression enabled), but
	 * other clients can include the header. So we cope with both cases
	 * here. The PPP header is always FF03 when using L2TP.
	 *
	 * Note that skb->data[] isn't dereferenced from a u16 ptr here since
	 * the field may be unaligned.
	 */
Apart from the unprecise "PPP header" term, which should be read as
"address and control fields", things should be quite clear.

> > @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
> >   static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
> >   			    size_t total_len)
> >   {
> > -	static const unsigned char ppph[2] = { 0xff, 0x03 };
> > +	static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
> 
> PPP has a 4-byte header.  Where's the protocol value?
>
No, PPP header (whatever you include in it) is of variable length. And
the protocol has already been set by the PPP layer anyway.
We're in L2TP here.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-22  0:13   ` Feng Gao
@ 2016-08-22  9:54     ` Guillaume Nault
  0 siblings, 0 replies; 11+ messages in thread
From: Guillaume Nault @ 2016-08-22  9:54 UTC (permalink / raw)
  To: Feng Gao
  Cc: Philp Prindeville, Gao Feng, paulus, David S. Miller,
	Linux Kernel Network Developers

On Mon, Aug 22, 2016 at 08:13:48AM +0800, Feng Gao wrote:
> inline
> 
> On Mon, Aug 22, 2016 at 6:36 AM, Philp Prindeville
> <philipp@redfish-solutions.com> wrote:
> > Inline
> >
> >
> > On 08/20/2016 09:52 AM, fgao@48lvckh6395k16k5.yundunddos.com wrote:
> >>
> >> From: Gao Feng <fgao@ikuai8.com>
> >>
> >> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
> >> 0x03, and 2 separately.
> >>
> >> Signed-off-by: Gao Feng <fgao@ikuai8.com>
> >> ---
> >>   v3: Modify the subject;
> >>   v2: Only replace the literal number with macros according to Guillaume's
> >> advice
> >>   v1: Inital patch
> >>
> >>   net/l2tp/l2tp_ppp.c | 8 ++++----
> >>   1 file changed, 4 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
> >> index d9560aa..65e2fd6 100644
> >> --- a/net/l2tp/l2tp_ppp.c
> >> +++ b/net/l2tp/l2tp_ppp.c
> >> @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff
> >> *skb)
> >>         if (!pskb_may_pull(skb, 2))
> >>                 return 1;
> >>   -     if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
> >> +       if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
> >
> >
> > This should have used PPP_ADDRESS() and PPP_CONTROL() here.
> 
> In my initial patch, I replace them with PPP_ADDRESS() and PPP_CONTROL.
> But Guillaume thought it was not clear as before.
> So I revert it.
> 
> >
> >>                 skb_pull(skb, 2);
> >
> >
> > This magic number should go away.
> 
> Same as above.
> 
> >
> >>         return 0;
> >> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct
> >> l2tp_session *session)
> >>   static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
> >>                             size_t total_len)
> >>   {
> >> -       static const unsigned char ppph[2] = { 0xff, 0x03 };
> >> +       static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
> >
> >
> > PPP has a 4-byte header.  Where's the protocol value?
> 
> In the original code, I fail to find the code which is used to fill
> the protocol value.
> So I keep the two bytes header. And I thought the protocol value may be filled
> by the upper layer.
> 
And you were right. This was a macro replacement patch anyway, so you
didn't have to bring functional changes with it.
And if the protocol field was really missing, the L2TP module would
have never worked.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-20 15:52 [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number fgao
  2016-08-21 22:23 ` David Miller
  2016-08-21 22:36 ` Philp Prindeville
@ 2016-08-22 10:07 ` Guillaume Nault
  2016-08-22 10:22   ` Feng Gao
  2 siblings, 1 reply; 11+ messages in thread
From: Guillaume Nault @ 2016-08-22 10:07 UTC (permalink / raw)
  To: fgao; +Cc: paulus, davem, philipp, netdev, gfree.wind

On Sat, Aug 20, 2016 at 11:52:27PM +0800, fgao@ikuai8.com wrote:
> From: Gao Feng <fgao@ikuai8.com>
> 
> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
> 0x03, and 2 separately.
> 
> Signed-off-by: Gao Feng <fgao@ikuai8.com>
> ---
>  v3: Modify the subject;
>  v2: Only replace the literal number with macros according to Guillaume's advice
>  v1: Inital patch
> 
>  net/l2tp/l2tp_ppp.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
> index d9560aa..65e2fd6 100644
> --- a/net/l2tp/l2tp_ppp.c
> +++ b/net/l2tp/l2tp_ppp.c
> @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
>  	if (!pskb_may_pull(skb, 2))
>  		return 1;
>  
> -	if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
> +	if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
>  		skb_pull(skb, 2);
>  
>  	return 0;
> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
>  static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
>  			    size_t total_len)
>  {
> -	static const unsigned char ppph[2] = { 0xff, 0x03 };
> +	static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
> 
Minor nit: I'd prefer to keep the space after '{' and before '}'.
I didn't want to bother you with this, but since it seems you'll have
to repost...

>  	struct sock *sk = sock->sk;
>  	struct sk_buff *skb;
>  	int error;
> @@ -369,7 +369,7 @@ error:
>   */
>  static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
>  {
> -	static const u8 ppph[2] = { 0xff, 0x03 };
> +	static const u8 ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
> 
Same here.

BTW, I thought you also wanted to remove the static ppph variable
from pppol2tp_xmit() / pppol2tp_sendmsg(), to directly assign
skb->data[0/1] with PPP_ALLSTATIONS/PPP_UI.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-22 10:07 ` Guillaume Nault
@ 2016-08-22 10:22   ` Feng Gao
  2016-08-22 11:46     ` Guillaume Nault
  0 siblings, 1 reply; 11+ messages in thread
From: Feng Gao @ 2016-08-22 10:22 UTC (permalink / raw)
  To: Guillaume Nault
  Cc: Gao Feng, paulus, David S. Miller, Philp Prindeville,
	Linux Kernel Network Developers

inline

On Mon, Aug 22, 2016 at 6:07 PM, Guillaume Nault <g.nault@alphalink.fr> wrote:
> On Sat, Aug 20, 2016 at 11:52:27PM +0800, fgao@ikuai8.com wrote:
>> From: Gao Feng <fgao@ikuai8.com>
>>
>> Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
>> 0x03, and 2 separately.
>>
>> Signed-off-by: Gao Feng <fgao@ikuai8.com>
>> ---
>>  v3: Modify the subject;
>>  v2: Only replace the literal number with macros according to Guillaume's advice
>>  v1: Inital patch
>>
>>  net/l2tp/l2tp_ppp.c | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
>> index d9560aa..65e2fd6 100644
>> --- a/net/l2tp/l2tp_ppp.c
>> +++ b/net/l2tp/l2tp_ppp.c
>> @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
>>       if (!pskb_may_pull(skb, 2))
>>               return 1;
>>
>> -     if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
>> +     if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
>>               skb_pull(skb, 2);
>>
>>       return 0;
>> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
>>  static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
>>                           size_t total_len)
>>  {
>> -     static const unsigned char ppph[2] = { 0xff, 0x03 };
>> +     static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
>>
> Minor nit: I'd prefer to keep the space after '{' and before '}'.
> I didn't want to bother you with this, but since it seems you'll have
> to repost...

I don't know if it is the coding style of Linux kernel.

>
>>       struct sock *sk = sock->sk;
>>       struct sk_buff *skb;
>>       int error;
>> @@ -369,7 +369,7 @@ error:
>>   */
>>  static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
>>  {
>> -     static const u8 ppph[2] = { 0xff, 0x03 };
>> +     static const u8 ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
>>
> Same here.
>
> BTW, I thought you also wanted to remove the static ppph variable
> from pppol2tp_xmit() / pppol2tp_sendmsg(), to directly assign
> skb->data[0/1] with PPP_ALLSTATIONS/PPP_UI.

If removed static ppph, there will be some codes which use literal "2"
instead of sizeof ppph.
Is it ok?

Regards
Feng

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-22  9:48   ` Guillaume Nault
@ 2016-08-22 10:29     ` Feng Gao
  0 siblings, 0 replies; 11+ messages in thread
From: Feng Gao @ 2016-08-22 10:29 UTC (permalink / raw)
  To: Guillaume Nault
  Cc: Philp Prindeville, Gao Feng, paulus, David S. Miller,
	Linux Kernel Network Developers

inline

On Mon, Aug 22, 2016 at 5:48 PM, Guillaume Nault <g.nault@alphalink.fr> wrote:
> On Sun, Aug 21, 2016 at 04:36:52PM -0600, Philp Prindeville wrote:
>> Inline
>>
>>
>> On 08/20/2016 09:52 AM, fgao@48lvckh6395k16k5.yundunddos.com wrote:
>> > From: Gao Feng <fgao@ikuai8.com>
>> >
>> > Use PPP_ALLSTATIONS, PPP_UI, and SEND_SHUTDOWN instead of 0xff,
>> > 0x03, and 2 separately.
>> >
>> > Signed-off-by: Gao Feng <fgao@ikuai8.com>
>> > ---
>> >   v3: Modify the subject;
>> >   v2: Only replace the literal number with macros according to Guillaume's advice
>> >   v1: Inital patch
>> >
>> >   net/l2tp/l2tp_ppp.c | 8 ++++----
>> >   1 file changed, 4 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
>> > index d9560aa..65e2fd6 100644
>> > --- a/net/l2tp/l2tp_ppp.c
>> > +++ b/net/l2tp/l2tp_ppp.c
>> > @@ -177,7 +177,7 @@ static int pppol2tp_recv_payload_hook(struct sk_buff *skb)
>> >     if (!pskb_may_pull(skb, 2))
>> >             return 1;
>> > -   if ((skb->data[0] == 0xff) && (skb->data[1] == 0x03))
>> > +   if ((skb->data[0] == PPP_ALLSTATIONS) && (skb->data[1] == PPP_UI))
>>
>> This should have used PPP_ADDRESS() and PPP_CONTROL() here.
>>
> Then please justify how would that make the code more readable.
> We're not trying to interpret a known valid PPP header here.
>
>> >             skb_pull(skb, 2);
>>
>> This magic number should go away.
>>
> Again, this is *not* a magic number. We've explicitely accessed the
> first _two_ header bytes and want to skip them.
> pskb_may_pull(2), ->data[0], ->data[1] and skb_pull(2) all go together.
>
> There's even a nice comment telling you what is done and why:
>         /* Skip PPP header, if present.  In testing, Microsoft L2TP clients
>          * don't send the PPP header (PPP header compression enabled), but
>          * other clients can include the header. So we cope with both cases
>          * here. The PPP header is always FF03 when using L2TP.
>          *
>          * Note that skb->data[] isn't dereferenced from a u16 ptr here since
>          * the field may be unaligned.
>          */
> Apart from the unprecise "PPP header" term, which should be read as
> "address and control fields", things should be quite clear.

If remove the static ppph, may be more clear. Because it will cause
person think about the ppp header.

Regards
Feng

>
>> > @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
>> >   static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
>> >                         size_t total_len)
>> >   {
>> > -   static const unsigned char ppph[2] = { 0xff, 0x03 };
>> > +   static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
>>
>> PPP has a 4-byte header.  Where's the protocol value?
>>
> No, PPP header (whatever you include in it) is of variable length. And
> the protocol has already been set by the PPP layer anyway.
> We're in L2TP here.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number
  2016-08-22 10:22   ` Feng Gao
@ 2016-08-22 11:46     ` Guillaume Nault
  0 siblings, 0 replies; 11+ messages in thread
From: Guillaume Nault @ 2016-08-22 11:46 UTC (permalink / raw)
  To: Feng Gao
  Cc: Gao Feng, paulus, David S. Miller, Philp Prindeville,
	Linux Kernel Network Developers

On Mon, Aug 22, 2016 at 06:22:42PM +0800, Feng Gao wrote:
> inline
> 
> On Mon, Aug 22, 2016 at 6:07 PM, Guillaume Nault <g.nault@alphalink.fr> wrote:
> > On Sat, Aug 20, 2016 at 11:52:27PM +0800, fgao@ikuai8.com wrote:
> >> From: Gao Feng <fgao@ikuai8.com>
> >> @@ -282,7 +282,7 @@ static void pppol2tp_session_sock_put(struct l2tp_session *session)
> >>  static int pppol2tp_sendmsg(struct socket *sock, struct msghdr *m,
> >>                           size_t total_len)
> >>  {
> >> -     static const unsigned char ppph[2] = { 0xff, 0x03 };
> >> +     static const unsigned char ppph[2] = {PPP_ALLSTATIONS, PPP_UI};
> >>
> > Minor nit: I'd prefer to keep the space after '{' and before '}'.
> > I didn't want to bother you with this, but since it seems you'll have
> > to repost...
> 
> I don't know if it is the coding style of Linux kernel.
>
Both forms are used currently and I can't recall any explicit
preference statement. So unless David has an opinion, you can just use
the form you like the best.

> > BTW, I thought you also wanted to remove the static ppph variable
> > from pppol2tp_xmit() / pppol2tp_sendmsg(), to directly assign
> > skb->data[0/1] with PPP_ALLSTATIONS/PPP_UI.
> 
> If removed static ppph, there will be some codes which use literal "2"
> instead of sizeof ppph.
> Is it ok?
> 
The literal "2" would be used in the sock_wmalloc() call only (or for
assigning the headroom variable in the case of pppol2tp_xmit()). Given
the number of data summed, I agree that having a plain "2" in the
middle could look odd. You can either add a comment for each data summed
(like in pppol2tp_xmit()), something like:
sock_wmalloc(sk, NET_SKB_PAD +
	     sizeof(struct iphdr) + /* IP header */
	     ...
	     2 +                    /* PPP Address and control field */
	     ...);

Or use a simple macro like:
/* Size of the PPP address and control fields */
#define PPP_ACF_LEN 2

Or event use macro and comment. That's up to you.
You can even drop this change entirely if you prefer, I don't mind.
I just raised this point because you said you'd remove ppph.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-08-22 11:46 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-20 15:52 [PATCH v3 net-next] l2tp: Refactor the codes with existing macros instead of literal number fgao
2016-08-21 22:23 ` David Miller
2016-08-21 22:36 ` Philp Prindeville
2016-08-21 22:49   ` David Miller
2016-08-22  0:13   ` Feng Gao
2016-08-22  9:54     ` Guillaume Nault
2016-08-22  9:48   ` Guillaume Nault
2016-08-22 10:29     ` Feng Gao
2016-08-22 10:07 ` Guillaume Nault
2016-08-22 10:22   ` Feng Gao
2016-08-22 11:46     ` Guillaume Nault

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.