Hello,

I am struggling with the byte order question on a x86_32 arch, I am doing some 
modifications on a program which actually works fine on a MIPS arch.

I do a reading from a RAW socket in this way:

        /* Configure socket */
        if ((fd = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP)) < 0) {
                perror("Error on socket creation, exit");
                exit(1);
        }
          ....
        if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, (void *)&va, sizeof(va))) {
                perror("Error on setsockopt, exit");
                exit(1);
        }
        va = 0;
        ....
        ....
        struct msghdr mhdr;
        struct __in_pktinfo *pktinfo = NULL;
        ...
        ...
        nrd = recvmsg(env->mrouter_fd, &mhdr, 0);       
        ...
        ip = (struct iphdr *)iov.iov_base;

When I print the saddr (or daddr) of the received ip packet it is printed as 
host byte order instead of what I am expecting, the network byte order. I can 
just use the htonl() family functions for solve the problem but I would like 
understand if it is the normal behavior or if there is an issues on my code, or 
if the device driver of my NIC can influence the question.
Many thanks,
Pietro.


_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to