17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * Copyright (C) 1993-2001 by Darren Reed. 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * See the IPFILTER.LICENCE file for details on licencing. 57c478bd9Sstevel@tonic-gate * 67c478bd9Sstevel@tonic-gate * Added redirect stuff and a variety of bug fixes. (mcn@EnGarde.com) 7*f4b3ec61Sdh * 8*f4b3ec61Sdh * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 9*f4b3ec61Sdh * Use is subject to license terms. 107c478bd9Sstevel@tonic-gate */ 11*f4b3ec61Sdh 12*f4b3ec61Sdh #pragma ident "%Z%%M% %I% %E% SMI" 13*f4b3ec61Sdh 147c478bd9Sstevel@tonic-gate #include "ipf.h" 157c478bd9Sstevel@tonic-gate #include "kmem.h" 167c478bd9Sstevel@tonic-gate 177c478bd9Sstevel@tonic-gate #if !defined(lint) 18ab25eeb5Syz static const char rcsid[] = "@(#)$Id: getnattype.c,v 1.3 2004/01/17 17:26:07 darrenr Exp $"; 197c478bd9Sstevel@tonic-gate #endif 207c478bd9Sstevel@tonic-gate 217c478bd9Sstevel@tonic-gate 227c478bd9Sstevel@tonic-gate /* 237c478bd9Sstevel@tonic-gate * Get a nat filter type given its kernel address. 247c478bd9Sstevel@tonic-gate */ 25*f4b3ec61Sdh char *getnattype(nat, alive) 26*f4b3ec61Sdh nat_t *nat; 27*f4b3ec61Sdh int alive; 287c478bd9Sstevel@tonic-gate { 297c478bd9Sstevel@tonic-gate static char unknownbuf[20]; 30*f4b3ec61Sdh ipnat_t *ipn, ipnatbuff; 317c478bd9Sstevel@tonic-gate char *which; 32*f4b3ec61Sdh int type; 337c478bd9Sstevel@tonic-gate 34*f4b3ec61Sdh if (!nat) 357c478bd9Sstevel@tonic-gate return "???"; 36*f4b3ec61Sdh if (alive) { 37*f4b3ec61Sdh type = nat->nat_redir; 38*f4b3ec61Sdh } else { 39*f4b3ec61Sdh ipn = nat->nat_ptr; 40*f4b3ec61Sdh if (kmemcpy((char *)&ipnatbuff, (long)ipn, sizeof(ipnatbuff))) 41*f4b3ec61Sdh return "!!!"; 42*f4b3ec61Sdh type = ipnatbuff.in_redir; 43*f4b3ec61Sdh } 447c478bd9Sstevel@tonic-gate 45*f4b3ec61Sdh switch (type) 467c478bd9Sstevel@tonic-gate { 477c478bd9Sstevel@tonic-gate case NAT_MAP : 487c478bd9Sstevel@tonic-gate which = "MAP"; 497c478bd9Sstevel@tonic-gate break; 507c478bd9Sstevel@tonic-gate case NAT_MAPBLK : 517c478bd9Sstevel@tonic-gate which = "MAP-BLOCK"; 527c478bd9Sstevel@tonic-gate break; 537c478bd9Sstevel@tonic-gate case NAT_REDIRECT : 547c478bd9Sstevel@tonic-gate which = "RDR"; 557c478bd9Sstevel@tonic-gate break; 567c478bd9Sstevel@tonic-gate case NAT_BIMAP : 577c478bd9Sstevel@tonic-gate which = "BIMAP"; 587c478bd9Sstevel@tonic-gate break; 597c478bd9Sstevel@tonic-gate default : 60*f4b3ec61Sdh sprintf(unknownbuf, "unknown(%04x)", type & 0xffffffff); 617c478bd9Sstevel@tonic-gate which = unknownbuf; 627c478bd9Sstevel@tonic-gate break; 637c478bd9Sstevel@tonic-gate } 647c478bd9Sstevel@tonic-gate return which; 657c478bd9Sstevel@tonic-gate } 66