Hi,
Code:
cat /usr/include/netinet/in.h | grep "#define IPPR"
#define IPPROTO_IP IPPROTO_IP
#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS
#define IPPROTO_ICMP IPPROTO_ICMP
#define IPPROTO_IGMP IPPROTO_IGMP
#define IPPROTO_IPIP IPPROTO_IPIP
#define IPPROTO_TCP IPPROTO_TCP
#define IPPROTO_EGP IPPROTO_EGP
#define IPPROTO_PUP IPPROTO_PUP
#define IPPROTO_UDP IPPROTO_UDP
#define IPPROTO_IDP IPPROTO_IDP
#define IPPROTO_TP IPPROTO_TP
#define IPPROTO_IPV6 IPPROTO_IPV6
#define IPPROTO_ROUTING IPPROTO_ROUTING
#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT
#define IPPROTO_RSVP IPPROTO_RSVP
#define IPPROTO_GRE IPPROTO_GRE
#define IPPROTO_ESP IPPROTO_ESP
#define IPPROTO_AH IPPROTO_AH
#define IPPROTO_ICMPV6 IPPROTO_ICMPV6
#define IPPROTO_NONE IPPROTO_NONE
#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS
#define IPPROTO_MTP IPPROTO_MTP
#define IPPROTO_ENCAP IPPROTO_ENCAP
#define IPPROTO_PIM IPPROTO_PIM
#define IPPROTO_COMP IPPROTO_COMP
#define IPPROTO_SCTP IPPROTO_SCTP
#define IPPROTO_RAW IPPROTO_RAW
I want to be able to print need to print IPPROTO_UDP, IPPROTO_ENCAP, or any other out of structure ip_hdr.
Code:
printf("%16d|", ip_hdr->ip_p);
/*
switch (ip_hdr->ip_p) {
case IPPROTO_TCP:
printf("%8s|", "TCP");
break;
case IPPROTO_UDP:
printf("%8s|", "UDP");
break;
case IPPROTO_ICMP:
printf("%8s|", "ICMP");
break;
case IPPROTO_IP:
printf("%8s|", "IP");
break;
default:
printf("%8s|", "UNKNOWN");
return;
}
*/
Currently, I just match with the CASE. Who knows another way?
Thank you in advance!