1 2 /* 3 * Copyright (C) 2012 by Darren Reed. 4 * 5 * See the IPFILTER.LICENCE file for details on licencing. 6 * 7 * Added redirect stuff and a variety of bug fixes. (mcn@EnGarde.com) 8 */ 9 #include "ipf.h" 10 #include "kmem.h" 11 12 #if !defined(lint) 13 static const char rcsid[] = "@(#)$Id$"; 14 #endif 15 16 17 /* 18 * Get a nat filter type given its kernel address. 19 */ 20 char * 21 getnattype(nat_t *nat) 22 { 23 static char unknownbuf[20]; 24 char *which; 25 26 if (!nat) 27 return ("???"); 28 29 switch (nat->nat_redir) 30 { 31 case NAT_MAP : 32 which = "MAP"; 33 break; 34 case NAT_MAPBLK : 35 which = "MAP-BLOCK"; 36 break; 37 case NAT_REDIRECT : 38 which = "RDR"; 39 break; 40 case NAT_MAP|NAT_REWRITE : 41 which = "RWR-MAP"; 42 break; 43 case NAT_REDIRECT|NAT_REWRITE : 44 which = "RWR-RDR"; 45 break; 46 case NAT_BIMAP : 47 which = "BIMAP"; 48 break; 49 case NAT_REDIRECT|NAT_DIVERTUDP : 50 which = "DIV-RDR"; 51 break; 52 case NAT_MAP|NAT_DIVERTUDP : 53 which = "DIV-MAP"; 54 break; 55 case NAT_REDIRECT|NAT_ENCAP : 56 which = "ENC-RDR"; 57 break; 58 case NAT_MAP|NAT_ENCAP : 59 which = "ENC-MAP"; 60 break; 61 default : 62 snprintf(unknownbuf, sizeof(unknownbuf), "unknown(%04x)", 63 nat->nat_redir & 0xffffffff); 64 which = unknownbuf; 65 break; 66 } 67 return (which); 68 } 69