Message ID | 1318382887-31824-1-git-send-email-muralira@google.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Le mardi 11 octobre 2011 à 18:28 -0700, Muraliraja Muniraju a écrit : > From: Murali Raja <muralira@google.com> > > This patch exposes the tos value for the TCP sockets when the TOS flag > is requested in the ext_flags for the inet_diag request. This would mainly be > used to expose TOS values for both for TCP and UDP sockets. Currently it is > supported for TCP. When netlink support for UDP would be added the support > to expose the TOS values would alse be done. > You could mention TCLASS support for IPv6 > Signed-off-by: Murali Raja <muralira@google.com> > --- > Changelog since v2: > - Adding support for IPV6 class and using right API's > Changelog since v1: > - Removing reserved field > > include/linux/inet_diag.h | 9 ++++++++- > net/ipv4/inet_diag.c | 5 +++++ > 2 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h > index bc8c490..e36093d 100644 > --- a/include/linux/inet_diag.h > +++ b/include/linux/inet_diag.h > @@ -97,9 +97,10 @@ enum { > INET_DIAG_INFO, > INET_DIAG_VEGASINFO, > INET_DIAG_CONG, > + INET_DIAG_TOS, > }; > > -#define INET_DIAG_MAX INET_DIAG_CONG > +#define INET_DIAG_MAX INET_DIAG_TOS > > > /* INET_DIAG_MEM */ > @@ -120,6 +121,12 @@ struct tcpvegas_info { > __u32 tcpv_minrtt; > }; > > +/* INET_DIAG_TOS */ > + > +struct inet_diag_tos { > + __u8 idiag_tos; > +}; Are you sure its still needed ? I am now wondering what is done in TIME_WAIT state. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Eric, I think it would be useful to expose the values this way. I shall make the changes to add TCLASS for ipv6 in the description. Regarding the TIME_WAIT state, I think it would be better of not exposing the values because there would hardly be anything to transmit during this time. Thanks, Murali On Tue, Oct 11, 2011 at 7:48 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le mardi 11 octobre 2011 à 18:28 -0700, Muraliraja Muniraju a écrit : >> From: Murali Raja <muralira@google.com> >> >> This patch exposes the tos value for the TCP sockets when the TOS flag >> is requested in the ext_flags for the inet_diag request. This would mainly be >> used to expose TOS values for both for TCP and UDP sockets. Currently it is >> supported for TCP. When netlink support for UDP would be added the support >> to expose the TOS values would alse be done. >> > > You could mention TCLASS support for IPv6 > >> Signed-off-by: Murali Raja <muralira@google.com> >> --- >> Changelog since v2: >> - Adding support for IPV6 class and using right API's >> Changelog since v1: >> - Removing reserved field >> >> include/linux/inet_diag.h | 9 ++++++++- >> net/ipv4/inet_diag.c | 5 +++++ >> 2 files changed, 13 insertions(+), 1 deletions(-) >> >> diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h >> index bc8c490..e36093d 100644 >> --- a/include/linux/inet_diag.h >> +++ b/include/linux/inet_diag.h >> @@ -97,9 +97,10 @@ enum { >> INET_DIAG_INFO, >> INET_DIAG_VEGASINFO, >> INET_DIAG_CONG, >> + INET_DIAG_TOS, >> }; >> >> -#define INET_DIAG_MAX INET_DIAG_CONG >> +#define INET_DIAG_MAX INET_DIAG_TOS >> >> >> /* INET_DIAG_MEM */ >> @@ -120,6 +121,12 @@ struct tcpvegas_info { >> __u32 tcpv_minrtt; >> }; >> >> +/* INET_DIAG_TOS */ >> + >> +struct inet_diag_tos { >> + __u8 idiag_tos; >> +}; > > Are you sure its still needed ? > > I am now wondering what is done in TIME_WAIT state. > > >
Le mardi 11 octobre 2011 à 21:16 -0700, MuraliRaja Muniraju a écrit : > Eric, > I think it would be useful to expose the values this way. > I shall make the changes to add TCLASS for ipv6 in the description. > > Regarding the TIME_WAIT state, I think it would be better of not > exposing the values because there would hardly be anything to transmit > during this time. > My remark had nothing to do with your patch actually : We dont store TOS/TCLASS on TIME_WAIT sockets, so you cannot report value in inet_diag. But we do send packets on behalf of TIME_WAIT sockets ;) Think about ACK messages. They probably are sent with a 0 TOS/TCLASS field... I am not sure its a problem or not. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 11 Oct 2011 18:28:07 -0700 Muraliraja Muniraju <muralira@google.com> wrote: > +/* INET_DIAG_TOS */ > + > +struct inet_diag_tos { > + __u8 idiag_tos; > +}; > + This structure is not used. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Eric, I am planning to not add code for the TIME_WAIT case as the tos values are zero as they are not saved. Please let me if this is OK. Thanks, Murali On Tue, Oct 11, 2011 at 9:31 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > Le mardi 11 octobre 2011 à 21:16 -0700, MuraliRaja Muniraju a écrit : >> Eric, >> I think it would be useful to expose the values this way. >> I shall make the changes to add TCLASS for ipv6 in the description. >> >> Regarding the TIME_WAIT state, I think it would be better of not >> exposing the values because there would hardly be anything to transmit >> during this time. >> > > My remark had nothing to do with your patch actually : > > We dont store TOS/TCLASS on TIME_WAIT sockets, so you cannot report > value in inet_diag. > > But we do send packets on behalf of TIME_WAIT sockets ;) > > Think about ACK messages. They probably are sent with a 0 TOS/TCLASS > field... I am not sure its a problem or not. > > > >
diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h index bc8c490..e36093d 100644 --- a/include/linux/inet_diag.h +++ b/include/linux/inet_diag.h @@ -97,9 +97,10 @@ enum { INET_DIAG_INFO, INET_DIAG_VEGASINFO, INET_DIAG_CONG, + INET_DIAG_TOS, }; -#define INET_DIAG_MAX INET_DIAG_CONG +#define INET_DIAG_MAX INET_DIAG_TOS /* INET_DIAG_MEM */ @@ -120,6 +121,12 @@ struct tcpvegas_info { __u32 tcpv_minrtt; }; +/* INET_DIAG_TOS */ + +struct inet_diag_tos { + __u8 idiag_tos; +}; + #ifdef __KERNEL__ struct sock; struct inet_hashinfo; diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c index 389a2e6..f5e2bda 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c @@ -108,6 +108,9 @@ static int inet_csk_diag_fill(struct sock *sk, icsk->icsk_ca_ops->name); } + if ((ext & (1 << (INET_DIAG_TOS - 1))) && (sk->sk_family != AF_INET6)) + RTA_PUT_U8(skb, INET_DIAG_TOS, inet->tos); + r->idiag_family = sk->sk_family; r->idiag_state = sk->sk_state; r->idiag_timer = 0; @@ -130,6 +133,8 @@ static int inet_csk_diag_fill(struct sock *sk, &np->rcv_saddr); ipv6_addr_copy((struct in6_addr *)r->id.idiag_dst, &np->daddr); + if (ext & (1 << (INET_DIAG_TOS - 1))) + RTA_PUT_U8(skb, INET_DIAG_TOS, np->tclass); } #endif