El Wed, Mar 18, 2009 at 02:59:28AM +0800 Cliffe ha dit:

> I have the destination port from a struct socket and I need to convert  
> it to a string.
>
>        struct inet_sock *inet = inet_sk(sock->sk);
>        unsigned int sport = inet->sport;
>
> I have tried using snprintf with %d, and %lu but I am not getting the  
> values I expect. For example port 80 is displayed as 20480.

the problem is that the port in inet->sport is stored in big endian
format, while your system seems to be little
endian (80d == 0x50, 20480d == 0x5000).

be16_to_cpu(inet->sport) should do the trick

-- 
Matthias Kaehlcke
Embedded Linux Engineer
Barcelona

     Nationalism is an infantile disease. It is the measles of mankind
                         (Albert Einstein)
                                                                 .''`.
    using free software / Debian GNU/Linux | http://debian.org  : :'  :
                                                                `. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4                  `-

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to