linux/include/linux/ip.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * INET         An implementation of the TCP/IP protocol suite for the LINUX
   4 *              operating system.  INET is implemented using the  BSD Socket
   5 *              interface as the means of communication with the user level.
   6 *
   7 *              Definitions for the IP protocol.
   8 *
   9 * Version:     @(#)ip.h        1.0.2   04/28/93
  10 *
  11 * Authors:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  12 */
  13#ifndef _LINUX_IP_H
  14#define _LINUX_IP_H
  15
  16#include <linux/skbuff.h>
  17#include <uapi/linux/ip.h>
  18
  19static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
  20{
  21        return (struct iphdr *)skb_network_header(skb);
  22}
  23
  24static inline struct iphdr *inner_ip_hdr(const struct sk_buff *skb)
  25{
  26        return (struct iphdr *)skb_inner_network_header(skb);
  27}
  28
  29static inline struct iphdr *ipip_hdr(const struct sk_buff *skb)
  30{
  31        return (struct iphdr *)skb_transport_header(skb);
  32}
  33
  34static inline unsigned int ip_transport_len(const struct sk_buff *skb)
  35{
  36        return ntohs(ip_hdr(skb)->tot_len) - skb_network_header_len(skb);
  37}
  38#endif  /* _LINUX_IP_H */
  39