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);
}