FreeBSD kernel IPv4 code
ip_icmp.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  icmp_ra_addr
 
struct  icmphdr
 
struct  icmp
 

Macros

#define icmp_pptr   icmp_hun.ih_pptr
 
#define icmp_gwaddr   icmp_hun.ih_gwaddr
 
#define icmp_id   icmp_hun.ih_idseq.icd_id
 
#define icmp_seq   icmp_hun.ih_idseq.icd_seq
 
#define icmp_void   icmp_hun.ih_void
 
#define icmp_pmvoid   icmp_hun.ih_pmtu.ipm_void
 
#define icmp_nextmtu   icmp_hun.ih_pmtu.ipm_nextmtu
 
#define icmp_num_addrs   icmp_hun.ih_rtradv.irt_num_addrs
 
#define icmp_wpa   icmp_hun.ih_rtradv.irt_wpa
 
#define icmp_lifetime   icmp_hun.ih_rtradv.irt_lifetime
 
#define icmp_otime   icmp_dun.id_ts.its_otime
 
#define icmp_rtime   icmp_dun.id_ts.its_rtime
 
#define icmp_ttime   icmp_dun.id_ts.its_ttime
 
#define icmp_ip   icmp_dun.id_ip.idi_ip
 
#define icmp_radv   icmp_dun.id_radv
 
#define icmp_mask   icmp_dun.id_mask
 
#define icmp_data   icmp_dun.id_data
 
#define ICMP_MINLEN   8 /* abs minimum */
 
#define ICMP_TSLEN   (8 + 3 * sizeof (uint32_t)) /* timestamp */
 
#define ICMP_MASKLEN   12 /* address mask */
 
#define ICMP_ADVLENMIN   (8 + sizeof (struct ip) + 8) /* min */
 
#define ICMP_ADVLEN(p)   (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
 
#define ICMP_ADVLENPREF(p)   (8 + ((p)->icmp_ip.ip_hl << 2) + 8 + 8 + 12)
 
#define ICMP_ECHOREPLY   0 /* echo reply */
 
#define ICMP_UNREACH   3 /* dest unreachable, codes: */
 
#define ICMP_UNREACH_NET   0 /* bad net */
 
#define ICMP_UNREACH_HOST   1 /* bad host */
 
#define ICMP_UNREACH_PROTOCOL   2 /* bad protocol */
 
#define ICMP_UNREACH_PORT   3 /* bad port */
 
#define ICMP_UNREACH_NEEDFRAG   4 /* IP_DF caused drop */
 
#define ICMP_UNREACH_SRCFAIL   5 /* src route failed */
 
#define ICMP_UNREACH_NET_UNKNOWN   6 /* unknown net */
 
#define ICMP_UNREACH_HOST_UNKNOWN   7 /* unknown host */
 
#define ICMP_UNREACH_ISOLATED   8 /* src host isolated */
 
#define ICMP_UNREACH_NET_PROHIB   9 /* prohibited access */
 
#define ICMP_UNREACH_HOST_PROHIB   10 /* ditto */
 
#define ICMP_UNREACH_TOSNET   11 /* bad tos for net */
 
#define ICMP_UNREACH_TOSHOST   12 /* bad tos for host */
 
#define ICMP_UNREACH_FILTER_PROHIB   13 /* admin prohib */
 
#define ICMP_UNREACH_HOST_PRECEDENCE   14 /* host prec vio. */
 
#define ICMP_UNREACH_PRECEDENCE_CUTOFF   15 /* prec cutoff */
 
#define ICMP_SOURCEQUENCH   4 /* packet lost, slow down */
 
#define ICMP_REDIRECT   5 /* shorter route, codes: */
 
#define ICMP_REDIRECT_NET   0 /* for network */
 
#define ICMP_REDIRECT_HOST   1 /* for host */
 
#define ICMP_REDIRECT_TOSNET   2 /* for tos and net */
 
#define ICMP_REDIRECT_TOSHOST   3 /* for tos and host */
 
#define ICMP_ALTHOSTADDR   6 /* alternate host address */
 
#define ICMP_ECHO   8 /* echo service */
 
#define ICMP_ROUTERADVERT   9 /* router advertisement */
 
#define ICMP_ROUTERADVERT_NORMAL   0 /* normal advertisement */
 
#define ICMP_ROUTERADVERT_NOROUTE_COMMON   16 /* selective routing */
 
#define ICMP_ROUTERSOLICIT   10 /* router solicitation */
 
#define ICMP_TIMXCEED   11 /* time exceeded, code: */
 
#define ICMP_TIMXCEED_INTRANS   0 /* ttl==0 in transit */
 
#define ICMP_TIMXCEED_REASS   1 /* ttl==0 in reass */
 
#define ICMP_PARAMPROB   12 /* ip header bad */
 
#define ICMP_PARAMPROB_ERRATPTR   0 /* error at param ptr */
 
#define ICMP_PARAMPROB_OPTABSENT   1 /* req. opt. absent */
 
#define ICMP_PARAMPROB_LENGTH   2 /* bad length */
 
#define ICMP_TSTAMP   13 /* timestamp request */
 
#define ICMP_TSTAMPREPLY   14 /* timestamp reply */
 
#define ICMP_IREQ   15 /* information request */
 
#define ICMP_IREQREPLY   16 /* information reply */
 
#define ICMP_MASKREQ   17 /* address mask request */
 
#define ICMP_MASKREPLY   18 /* address mask reply */
 
#define ICMP_TRACEROUTE   30 /* traceroute */
 
#define ICMP_DATACONVERR   31 /* data conversion error */
 
#define ICMP_MOBILE_REDIRECT   32 /* mobile host redirect */
 
#define ICMP_IPV6_WHEREAREYOU   33 /* IPv6 where-are-you */
 
#define ICMP_IPV6_IAMHERE   34 /* IPv6 i-am-here */
 
#define ICMP_MOBILE_REGREQUEST   35 /* mobile registration req */
 
#define ICMP_MOBILE_REGREPLY   36 /* mobile registration reply */
 
#define ICMP_SKIP   39 /* SKIP */
 
#define ICMP_PHOTURIS   40 /* Photuris */
 
#define ICMP_PHOTURIS_UNKNOWN_INDEX   1 /* unknown sec index */
 
#define ICMP_PHOTURIS_AUTH_FAILED   2 /* auth failed */
 
#define ICMP_PHOTURIS_DECRYPT_FAILED   3 /* decrypt failed */
 
#define ICMP_MAXTYPE   40
 
#define ICMP_INFOTYPE(type)
 

Functions

void icmp_error (struct mbuf *, int, int, uint32_t, int)
 
int icmp_input (struct mbuf **, int *, int)
 
int ip_next_mtu (int, int)
 

Macro Definition Documentation

◆ ICMP_ADVLEN

#define ICMP_ADVLEN (   p)    (8 + ((p)->icmp_ip.ip_hl << 2) + 8)

Definition at line 139 of file ip_icmp.h.

◆ ICMP_ADVLENMIN

#define ICMP_ADVLENMIN   (8 + sizeof (struct ip) + 8) /* min */

Definition at line 138 of file ip_icmp.h.

◆ ICMP_ADVLENPREF

#define ICMP_ADVLENPREF (   p)    (8 + ((p)->icmp_ip.ip_hl << 2) + 8 + 8 + 12)

Definition at line 148 of file ip_icmp.h.

◆ ICMP_ALTHOSTADDR

#define ICMP_ALTHOSTADDR   6 /* alternate host address */

Definition at line 177 of file ip_icmp.h.

◆ icmp_data

#define icmp_data   icmp_dun.id_data

Definition at line 124 of file ip_icmp.h.

◆ ICMP_DATACONVERR

#define ICMP_DATACONVERR   31 /* data conversion error */

Definition at line 197 of file ip_icmp.h.

◆ ICMP_ECHO

#define ICMP_ECHO   8 /* echo service */

Definition at line 178 of file ip_icmp.h.

◆ ICMP_ECHOREPLY

#define ICMP_ECHOREPLY   0 /* echo reply */

Definition at line 153 of file ip_icmp.h.

◆ icmp_gwaddr

#define icmp_gwaddr   icmp_hun.ih_gwaddr

Definition at line 91 of file ip_icmp.h.

◆ icmp_id

#define icmp_id   icmp_hun.ih_idseq.icd_id

Definition at line 92 of file ip_icmp.h.

◆ ICMP_INFOTYPE

#define ICMP_INFOTYPE (   type)
Value:
((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
#define ICMP_ROUTERADVERT
Definition: ip_icmp.h:179
#define ICMP_ROUTERSOLICIT
Definition: ip_icmp.h:182
#define ICMP_IREQ
Definition: ip_icmp.h:192
#define ICMP_TSTAMP
Definition: ip_icmp.h:190
#define ICMP_ECHOREPLY
Definition: ip_icmp.h:153
#define ICMP_IREQREPLY
Definition: ip_icmp.h:193
#define ICMP_MASKREQ
Definition: ip_icmp.h:194
#define ICMP_ECHO
Definition: ip_icmp.h:178
#define ICMP_MASKREPLY
Definition: ip_icmp.h:195
#define ICMP_TSTAMPREPLY
Definition: ip_icmp.h:191

Definition at line 211 of file ip_icmp.h.

◆ icmp_ip

#define icmp_ip   icmp_dun.id_ip.idi_ip

Definition at line 121 of file ip_icmp.h.

◆ ICMP_IPV6_IAMHERE

#define ICMP_IPV6_IAMHERE   34 /* IPv6 i-am-here */

Definition at line 200 of file ip_icmp.h.

◆ ICMP_IPV6_WHEREAREYOU

#define ICMP_IPV6_WHEREAREYOU   33 /* IPv6 where-are-you */

Definition at line 199 of file ip_icmp.h.

◆ ICMP_IREQ

#define ICMP_IREQ   15 /* information request */

Definition at line 192 of file ip_icmp.h.

◆ ICMP_IREQREPLY

#define ICMP_IREQREPLY   16 /* information reply */

Definition at line 193 of file ip_icmp.h.

◆ icmp_lifetime

#define icmp_lifetime   icmp_hun.ih_rtradv.irt_lifetime

Definition at line 99 of file ip_icmp.h.

◆ icmp_mask

#define icmp_mask   icmp_dun.id_mask

Definition at line 123 of file ip_icmp.h.

◆ ICMP_MASKLEN

#define ICMP_MASKLEN   12 /* address mask */

Definition at line 137 of file ip_icmp.h.

◆ ICMP_MASKREPLY

#define ICMP_MASKREPLY   18 /* address mask reply */

Definition at line 195 of file ip_icmp.h.

◆ ICMP_MASKREQ

#define ICMP_MASKREQ   17 /* address mask request */

Definition at line 194 of file ip_icmp.h.

◆ ICMP_MAXTYPE

#define ICMP_MAXTYPE   40

Definition at line 209 of file ip_icmp.h.

◆ ICMP_MINLEN

#define ICMP_MINLEN   8 /* abs minimum */

Definition at line 135 of file ip_icmp.h.

◆ ICMP_MOBILE_REDIRECT

#define ICMP_MOBILE_REDIRECT   32 /* mobile host redirect */

Definition at line 198 of file ip_icmp.h.

◆ ICMP_MOBILE_REGREPLY

#define ICMP_MOBILE_REGREPLY   36 /* mobile registration reply */

Definition at line 202 of file ip_icmp.h.

◆ ICMP_MOBILE_REGREQUEST

#define ICMP_MOBILE_REGREQUEST   35 /* mobile registration req */

Definition at line 201 of file ip_icmp.h.

◆ icmp_nextmtu

#define icmp_nextmtu   icmp_hun.ih_pmtu.ipm_nextmtu

Definition at line 96 of file ip_icmp.h.

◆ icmp_num_addrs

#define icmp_num_addrs   icmp_hun.ih_rtradv.irt_num_addrs

Definition at line 97 of file ip_icmp.h.

◆ icmp_otime

#define icmp_otime   icmp_dun.id_ts.its_otime

Definition at line 118 of file ip_icmp.h.

◆ ICMP_PARAMPROB

#define ICMP_PARAMPROB   12 /* ip header bad */

Definition at line 186 of file ip_icmp.h.

◆ ICMP_PARAMPROB_ERRATPTR

#define ICMP_PARAMPROB_ERRATPTR   0 /* error at param ptr */

Definition at line 187 of file ip_icmp.h.

◆ ICMP_PARAMPROB_LENGTH

#define ICMP_PARAMPROB_LENGTH   2 /* bad length */

Definition at line 189 of file ip_icmp.h.

◆ ICMP_PARAMPROB_OPTABSENT

#define ICMP_PARAMPROB_OPTABSENT   1 /* req. opt. absent */

Definition at line 188 of file ip_icmp.h.

◆ ICMP_PHOTURIS

#define ICMP_PHOTURIS   40 /* Photuris */

Definition at line 204 of file ip_icmp.h.

◆ ICMP_PHOTURIS_AUTH_FAILED

#define ICMP_PHOTURIS_AUTH_FAILED   2 /* auth failed */

Definition at line 206 of file ip_icmp.h.

◆ ICMP_PHOTURIS_DECRYPT_FAILED

#define ICMP_PHOTURIS_DECRYPT_FAILED   3 /* decrypt failed */

Definition at line 207 of file ip_icmp.h.

◆ ICMP_PHOTURIS_UNKNOWN_INDEX

#define ICMP_PHOTURIS_UNKNOWN_INDEX   1 /* unknown sec index */

Definition at line 205 of file ip_icmp.h.

◆ icmp_pmvoid

#define icmp_pmvoid   icmp_hun.ih_pmtu.ipm_void

Definition at line 95 of file ip_icmp.h.

◆ icmp_pptr

#define icmp_pptr   icmp_hun.ih_pptr

Definition at line 90 of file ip_icmp.h.

◆ icmp_radv

#define icmp_radv   icmp_dun.id_radv

Definition at line 122 of file ip_icmp.h.

◆ ICMP_REDIRECT

#define ICMP_REDIRECT   5 /* shorter route, codes: */

Definition at line 172 of file ip_icmp.h.

◆ ICMP_REDIRECT_HOST

#define ICMP_REDIRECT_HOST   1 /* for host */

Definition at line 174 of file ip_icmp.h.

◆ ICMP_REDIRECT_NET

#define ICMP_REDIRECT_NET   0 /* for network */

Definition at line 173 of file ip_icmp.h.

◆ ICMP_REDIRECT_TOSHOST

#define ICMP_REDIRECT_TOSHOST   3 /* for tos and host */

Definition at line 176 of file ip_icmp.h.

◆ ICMP_REDIRECT_TOSNET

#define ICMP_REDIRECT_TOSNET   2 /* for tos and net */

Definition at line 175 of file ip_icmp.h.

◆ ICMP_ROUTERADVERT

#define ICMP_ROUTERADVERT   9 /* router advertisement */

Definition at line 179 of file ip_icmp.h.

◆ ICMP_ROUTERADVERT_NORMAL

#define ICMP_ROUTERADVERT_NORMAL   0 /* normal advertisement */

Definition at line 180 of file ip_icmp.h.

◆ ICMP_ROUTERADVERT_NOROUTE_COMMON

#define ICMP_ROUTERADVERT_NOROUTE_COMMON   16 /* selective routing */

Definition at line 181 of file ip_icmp.h.

◆ ICMP_ROUTERSOLICIT

#define ICMP_ROUTERSOLICIT   10 /* router solicitation */

Definition at line 182 of file ip_icmp.h.

◆ icmp_rtime

#define icmp_rtime   icmp_dun.id_ts.its_rtime

Definition at line 119 of file ip_icmp.h.

◆ icmp_seq

#define icmp_seq   icmp_hun.ih_idseq.icd_seq

Definition at line 93 of file ip_icmp.h.

◆ ICMP_SKIP

#define ICMP_SKIP   39 /* SKIP */

Definition at line 203 of file ip_icmp.h.

◆ ICMP_SOURCEQUENCH

#define ICMP_SOURCEQUENCH   4 /* packet lost, slow down */

Definition at line 171 of file ip_icmp.h.

◆ ICMP_TIMXCEED

#define ICMP_TIMXCEED   11 /* time exceeded, code: */

Definition at line 183 of file ip_icmp.h.

◆ ICMP_TIMXCEED_INTRANS

#define ICMP_TIMXCEED_INTRANS   0 /* ttl==0 in transit */

Definition at line 184 of file ip_icmp.h.

◆ ICMP_TIMXCEED_REASS

#define ICMP_TIMXCEED_REASS   1 /* ttl==0 in reass */

Definition at line 185 of file ip_icmp.h.

◆ ICMP_TRACEROUTE

#define ICMP_TRACEROUTE   30 /* traceroute */

Definition at line 196 of file ip_icmp.h.

◆ ICMP_TSLEN

#define ICMP_TSLEN   (8 + 3 * sizeof (uint32_t)) /* timestamp */

Definition at line 136 of file ip_icmp.h.

◆ ICMP_TSTAMP

#define ICMP_TSTAMP   13 /* timestamp request */

Definition at line 190 of file ip_icmp.h.

◆ ICMP_TSTAMPREPLY

#define ICMP_TSTAMPREPLY   14 /* timestamp reply */

Definition at line 191 of file ip_icmp.h.

◆ icmp_ttime

#define icmp_ttime   icmp_dun.id_ts.its_ttime

Definition at line 120 of file ip_icmp.h.

◆ ICMP_UNREACH

#define ICMP_UNREACH   3 /* dest unreachable, codes: */

Definition at line 154 of file ip_icmp.h.

◆ ICMP_UNREACH_FILTER_PROHIB

#define ICMP_UNREACH_FILTER_PROHIB   13 /* admin prohib */

Definition at line 168 of file ip_icmp.h.

◆ ICMP_UNREACH_HOST

#define ICMP_UNREACH_HOST   1 /* bad host */

Definition at line 156 of file ip_icmp.h.

◆ ICMP_UNREACH_HOST_PRECEDENCE

#define ICMP_UNREACH_HOST_PRECEDENCE   14 /* host prec vio. */

Definition at line 169 of file ip_icmp.h.

◆ ICMP_UNREACH_HOST_PROHIB

#define ICMP_UNREACH_HOST_PROHIB   10 /* ditto */

Definition at line 165 of file ip_icmp.h.

◆ ICMP_UNREACH_HOST_UNKNOWN

#define ICMP_UNREACH_HOST_UNKNOWN   7 /* unknown host */

Definition at line 162 of file ip_icmp.h.

◆ ICMP_UNREACH_ISOLATED

#define ICMP_UNREACH_ISOLATED   8 /* src host isolated */

Definition at line 163 of file ip_icmp.h.

◆ ICMP_UNREACH_NEEDFRAG

#define ICMP_UNREACH_NEEDFRAG   4 /* IP_DF caused drop */

Definition at line 159 of file ip_icmp.h.

◆ ICMP_UNREACH_NET

#define ICMP_UNREACH_NET   0 /* bad net */

Definition at line 155 of file ip_icmp.h.

◆ ICMP_UNREACH_NET_PROHIB

#define ICMP_UNREACH_NET_PROHIB   9 /* prohibited access */

Definition at line 164 of file ip_icmp.h.

◆ ICMP_UNREACH_NET_UNKNOWN

#define ICMP_UNREACH_NET_UNKNOWN   6 /* unknown net */

Definition at line 161 of file ip_icmp.h.

◆ ICMP_UNREACH_PORT

#define ICMP_UNREACH_PORT   3 /* bad port */

Definition at line 158 of file ip_icmp.h.

◆ ICMP_UNREACH_PRECEDENCE_CUTOFF

#define ICMP_UNREACH_PRECEDENCE_CUTOFF   15 /* prec cutoff */

Definition at line 170 of file ip_icmp.h.

◆ ICMP_UNREACH_PROTOCOL

#define ICMP_UNREACH_PROTOCOL   2 /* bad protocol */

Definition at line 157 of file ip_icmp.h.

◆ ICMP_UNREACH_SRCFAIL

#define ICMP_UNREACH_SRCFAIL   5 /* src route failed */

Definition at line 160 of file ip_icmp.h.

◆ ICMP_UNREACH_TOSHOST

#define ICMP_UNREACH_TOSHOST   12 /* bad tos for host */

Definition at line 167 of file ip_icmp.h.

◆ ICMP_UNREACH_TOSNET

#define ICMP_UNREACH_TOSNET   11 /* bad tos for net */

Definition at line 166 of file ip_icmp.h.

◆ icmp_void

#define icmp_void   icmp_hun.ih_void

Definition at line 94 of file ip_icmp.h.

◆ icmp_wpa

#define icmp_wpa   icmp_hun.ih_rtradv.irt_wpa

Definition at line 98 of file ip_icmp.h.

Function Documentation

◆ icmp_error()

void icmp_error ( struct mbuf *  ,
int  ,
int  ,
uint32_t  ,
int   
)

Referenced by ip_dooptions(), ip_findroute(), ip_forward(), and ip_tryforward().

Here is the caller graph for this function:

◆ icmp_input()

int icmp_input ( struct mbuf **  ,
int *  ,
int   
)

◆ ip_next_mtu()

int ip_next_mtu ( int  ,
int   
)

Referenced by ip_forward().

Here is the caller graph for this function: