Re: ip_hdr vs ipip_hdr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ricky,

ipip in the linux semantics refers usually to IP tunnel, for example:
http://lxr.free-electrons.com/source/net/ipv4/ipip.c

Traffic of ip tunnels is composed from an inner IP header which is
encapsulated within a packet which as the external IP header,

>(1) what is differences between ip_hdr and ipip_hdr? Why we have them? No ?>documentation whatever to figure it out.

ip_hdr() is the IP header of layer 3, the network

 ipip_hdr() is the IP header of layer 4, the transport layer. So this
is the IP header of the internal IP header when you have a tunnel, not
the external IP header.

Hope this helps,

Regards,
Rami Rosen

http://ramirose.wix.com/ramirosen

On 18 August 2016 at 11:47, Ricky <zhangchaowang@xxxxxxxxx> wrote:
>
> In include/linux/ip.h,
>
> 23 static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
> 24 {
> 25         return (struct iphdr *)skb_network_header(skb);
> 26 }
> 27
> 28 static inline struct iphdr *inner_ip_hdr(const struct sk_buff *skb)
> 29 {
> 30         return (struct iphdr *)skb_inner_network_header(skb);
> 31 }
> 32
> 33 static inline struct iphdr *ipip_hdr(const struct sk_buff *skb)
> 34 {
> 35         return (struct iphdr *)skb_transport_header(skb);
> 36 }
> 37 #endif  /* _LINUX_IP_H */
>
> if I passed in sk_buff to ip_hdr and ipip_hdr
>
> struct iphdr *ip_hdr ip_hdr_net = ip_hdr(skb);
> struct iphdr *ip_hdr ip_hdr_trans = ipip_hdr(skb);
>
> Do ip_hdr_net->saddr and ip_hdr_trans->saddr point to the same thing? I
> tried it on code. It doesn't. It seems that only ip_hdr_net->saddr point to
> source IP address, which make sense. Because network layer has IP but not on
> transport layer.
>
> So questions:
>
> (1) what is differences between ip_hdr and ipip_hdr? Why we have them? No
> documentation whatever to figure it out.
>
> (2) should I use ntohX function to convert ip_hdr member data when accessing
> them? eg, ip_hdr_net->saddr.
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies@xxxxxxxxxxxxxxxxx
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux