Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 May 1996 20:50:12 -0500 (CDT)
From:      Alex Nash <alex@zen.nash.org>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        phk@freebsd.org
Subject:   bin/1266: IPFW: Resolve service names with -N option
Message-ID:  <199605280150.UAA00814@zen.nash.org>
Resent-Message-ID: <199605280200.TAA20306@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         1266
>Category:       bin
>Synopsis:       IPFW: Resolve service names with -N option
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon May 27 19:00:02 PDT 1996
>Last-Modified:
>Originator:     Alex Nash
>Organization:
>Release:        FreeBSD 2.1-STABLE i386
>Environment:

2.1.0-STABLE/CURRENT running IPFW.

>Description:

The -N option to ipfw resolves host names but not service names
(perhaps this is intentional?).

>How-To-Repeat:

# ipfw -N l

>Fix:

NOTE: These diffs are against those submitted in bin/1220.  
      The version numbers do not correspond to those in the FreeBSD 
      CVS tree.


	
Index: ipfw.c
===================================================================
RCS file: /home/alex/cvs/ipfw/ipfw.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -r1.4 -r1.5
*** ipfw.c	1996/05/19 18:28:45	1.4
--- ipfw.c	1996/05/28 01:16:42	1.5
***************
*** 15,21 ****
   *
   * NEW command line interface for IP firewall facility
   *
!  * $Id: ipfw.c,v 1.4 1996/05/19 18:28:45 alex Exp $
   *
   */
  
--- 15,21 ----
   *
   * NEW command line interface for IP firewall facility
   *
!  * $Id: ipfw.c,v 1.5 1996/05/28 01:16:42 alex Exp $
   *
   */
  
***************
*** 65,70 ****
--- 65,104 ----
  }                         
  
  void
+ print_port(port, comma, flg)
+ 	u_short port,flg;
+ 	const char *comma;
+ {
+ 	int printed = 0;
+ 
+ 	if (do_resolv) {
+ 		struct servent *se;
+ 		const char *protocol;
+ 
+ 		switch (flg & IP_FW_F_KIND) {
+ 			case IP_FW_F_TCP:
+ 				protocol = "tcp";
+ 				break;
+ 			case IP_FW_F_UDP:
+ 				protocol = "udp";
+ 				break;
+ 			default:
+ 				protocol = NULL;
+ 				break;
+ 		}
+ 
+ 		se = getservbyport(htons(port), protocol);
+ 
+ 		if (se) {
+ 			printf("%s%s", comma, se->s_name);
+ 			printed = 1;
+ 		}
+ 	} 
+ 	if (!printed)
+ 		printf("%s%d",comma,port);
+ }
+ 
+ void
  show_ipfw(chain)
  	struct ip_fw *chain;
  {
***************
*** 73,78 ****
--- 107,114 ----
  	struct hostent *he;
  	int i,mb;
  
+ 	if (do_resolv)
+ 		setservent(1/*stayopen*/);
  
  	printf("%05u ", chain->fw_number);
  
***************
*** 152,158 ****
  
  	comma = " ";
  	for (i=0;i<chain->fw_nsp; i++ ) {
! 		printf("%s%d",comma,chain->fw_pts[i]);
  		if (i==0 && (chain->fw_flg & IP_FW_F_SRNG))
  			comma = "-";
  		else
--- 188,194 ----
  
  	comma = " ";
  	for (i=0;i<chain->fw_nsp; i++ ) {
! 		print_port(chain->fw_pts[i], comma, chain->fw_flg);
  		if (i==0 && (chain->fw_flg & IP_FW_F_SRNG))
  			comma = "-";
  		else
***************
*** 190,196 ****
  
  	comma = " ";
  	for (i=0;i<chain->fw_ndp;i++) {
! 		printf("%s%d",comma,chain->fw_pts[chain->fw_nsp+i]);
  		if (i==0 && (chain->fw_flg & IP_FW_F_DRNG))
  			comma = "-";
  		else
--- 226,232 ----
  
  	comma = " ";
  	for (i=0;i<chain->fw_ndp;i++) {
! 		print_port(chain->fw_pts[chain->fw_nsp+i], comma, chain->fw_flg);
  		if (i==0 && (chain->fw_flg & IP_FW_F_DRNG))
  			comma = "-";
  		else
***************
*** 272,277 ****
--- 308,316 ----
  			}
  	}
  	printf("\n");
+ 
+ 	if (do_resolv)
+ 		endservent();
  }
  
  void


>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605280150.UAA00814>