linux/include/linux/icmp.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 ICMP protocol.
   8 *
   9 * Version:     @(#)icmp.h      1.0.3   04/28/93
  10 *
  11 * Author:      Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  12 */
  13#ifndef _LINUX_ICMP_H
  14#define _LINUX_ICMP_H
  15
  16#include <linux/skbuff.h>
  17#include <uapi/linux/icmp.h>
  18#include <uapi/linux/errqueue.h>
  19
  20static inline struct icmphdr *icmp_hdr(const struct sk_buff *skb)
  21{
  22        return (struct icmphdr *)skb_transport_header(skb);
  23}
  24
  25static inline bool icmp_is_err(int type)
  26{
  27        switch (type) {
  28        case ICMP_DEST_UNREACH:
  29        case ICMP_SOURCE_QUENCH:
  30        case ICMP_REDIRECT:
  31        case ICMP_TIME_EXCEEDED:
  32        case ICMP_PARAMETERPROB:
  33                return true;
  34        }
  35
  36        return false;
  37}
  38
  39void ip_icmp_error_rfc4884(const struct sk_buff *skb,
  40                           struct sock_ee_data_rfc4884 *out,
  41                           int thlen, int off);
  42
  43#endif  /* _LINUX_ICMP_H */
  44