On 06:12:09 Dec 05, Girish Venkatachalam wrote:
> 
> If there is enough coffee for me in the list, I would do it. ;)
> 

This diff should satisfy everyone.

-Girish
Index: pfctl_parser.c
===================================================================
RCS file: /cvs/src/sbin/pfctl/pfctl_parser.c,v
retrieving revision 1.235
diff -u -r1.235 pfctl_parser.c
--- pfctl_parser.c      2007/10/15 02:16:35     1.235
+++ pfctl_parser.c      2007/12/05 01:27:21
@@ -295,6 +295,7 @@

 void
 print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto)
 {
-       char             a1[6], a2[6];
+       char     a1[6], a2[6], srvport1[1024], srvport2[1024];
        struct servent  *s;
-
        s = getservbyport(p1, proto);
        p1 = ntohs(p1);
-       p2 = ntohs(p2);
        snprintf(a1, sizeof(a1), "%u", p1);
+
+       if (s != NULL)
+               snprintf(srvport1,sizeof(srvport1), "%s(%s)", s->s_name, a1);
+       else    
+               strlcpy(srvport1, a1, sizeof(srvport1));
+               
+       p2 = ntohs(p2);
        snprintf(a2, sizeof(a2), "%u", p2);
+       s = getservbyport(p2, proto);
+       if (s != NULL)
+               snprintf(srvport2,sizeof(srvport2), "%s(%s)", s->s_name, a1);
+       else    
+               strlcpy(srvport2, a2, sizeof(srvport2));
+               
        printf(" port");
-       if (s != NULL && (op == PF_OP_EQ || op == PF_OP_NE))
-               print_op(op, s->s_name, a2);
-       else
-               print_op(op, a1, a2);
+       print_op(op, srvport1, srvport2);
 }

Reply via email to