printproto.c revision 255332
1153877Sguido/* 2255332Scy * Copyright (C) 2012 by Darren Reed. 3153877Sguido * 4153877Sguido * See the IPFILTER.LICENCE file for details on licencing. 5153877Sguido */ 6153877Sguido 7153877Sguido#include "ipf.h" 8153877Sguido 9153877Sguido 10153877Sguido#if !defined(lint) 11255332Scystatic const char rcsid[] = "@(#)$Id$"; 12153877Sguido#endif 13153877Sguido 14153877Sguido 15255332Scyvoid 16255332Scyprintproto(pr, p, np) 17255332Scy struct protoent *pr; 18255332Scy int p; 19255332Scy ipnat_t *np; 20153877Sguido{ 21153877Sguido if (np != NULL) { 22153877Sguido if ((np->in_flags & IPN_TCPUDP) == IPN_TCPUDP) 23255332Scy PRINTF("tcp/udp"); 24153877Sguido else if (np->in_flags & IPN_TCP) 25255332Scy PRINTF("tcp"); 26153877Sguido else if (np->in_flags & IPN_UDP) 27255332Scy PRINTF("udp"); 28153877Sguido else if (np->in_flags & IPN_ICMPQUERY) 29255332Scy PRINTF("icmp"); 30153877Sguido#ifdef _AIX51 31153877Sguido /* 32153877Sguido * To make up for "ip = 252" and "hopopt = 0" in /etc/protocols 33255332Scy * The IANA has doubled up on the definition of 0 - it is now 34255332Scy * also used for IPv6 hop-opts, so we can no longer rely on 35255332Scy * /etc/protocols providing the correct name->number mapping. 36153877Sguido */ 37153877Sguido#endif 38255332Scy else if (np->in_pr[0] == 0) 39255332Scy PRINTF("ip"); 40153877Sguido else if (pr != NULL) 41255332Scy PRINTF("%s", pr->p_name); 42153877Sguido else 43255332Scy PRINTF("%d", np->in_pr[0]); 44153877Sguido } else { 45153877Sguido#ifdef _AIX51 46153877Sguido if (p == 0) 47255332Scy PRINTF("ip"); 48153877Sguido else 49153877Sguido#endif 50153877Sguido if (pr != NULL) 51255332Scy PRINTF("%s", pr->p_name); 52153877Sguido else 53255332Scy PRINTF("%d", p); 54153877Sguido } 55153877Sguido} 56