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