Klemens Nanni([email protected]) on 2018.07.23 16:52:11 +0200:
> Here's a start to avoid duplicate routines that moves the inet_ntop
> wiggle from four locations into a small new helper called
> `print_addr_str()'.
> 
> Feedback? OK?

ok benno@

 
> Index: pf_print_state.c
> ===================================================================
> RCS file: /cvs/src/sbin/pfctl/pf_print_state.c,v
> retrieving revision 1.64
> diff -u -p -r1.64 pf_print_state.c
> --- pf_print_state.c  21 Jan 2015 21:50:33 -0000      1.64
> +++ pf_print_state.c  23 Jul 2018 10:59:53 -0000
> @@ -81,31 +81,17 @@ print_addr(struct pf_addr_wrap *addr, sa
>                       printf("<%s>", addr->v.tblname);
>               return;
>       case PF_ADDR_RANGE: {
> -             char buf[48];
> -
> -             if (inet_ntop(af, &addr->v.a.addr, buf, sizeof(buf)) == NULL)
> -                     printf("?");
> -             else
> -                     printf("%s", buf);
> -             if (inet_ntop(af, &addr->v.a.mask, buf, sizeof(buf)) == NULL)
> -                     printf(" - ?");
> -             else
> -                     printf(" - %s", buf);
> +             print_addr_str(af, &addr->v.a.addr);
> +             printf(" - ");
> +             print_addr_str(af, &addr->v.a.mask);
>               break;
>       }
>       case PF_ADDR_ADDRMASK:
>               if (PF_AZERO(&addr->v.a.addr, AF_INET6) &&
>                   PF_AZERO(&addr->v.a.mask, AF_INET6))
>                       printf("any");
> -             else {
> -                     char buf[48];
> -
> -                     if (inet_ntop(af, &addr->v.a.addr, buf,
> -                         sizeof(buf)) == NULL)
> -                             printf("?");
> -                     else
> -                             printf("%s", buf);
> -             }
> +             else
> +                     print_addr_str(af, &addr->v.a.addr);
>               break;
>       case PF_ADDR_NOROUTE:
>               printf("no-route");
> @@ -130,6 +116,17 @@ print_addr(struct pf_addr_wrap *addr, sa
>               if (bits < (af == AF_INET ? 32 : 128))
>                       printf("/%d", bits);
>       }
> +}
> +
> +void
> +print_addr_str(sa_family_t af, struct pf_addr *addr)
> +{
> +     static char buf[48];
> +
> +     if (inet_ntop(af, addr, buf, sizeof(buf)) == NULL)
> +             printf("?");
> +     else
> +             printf("%s", buf);
>  }
>  
>  void
> Index: pfctl.h
> ===================================================================
> RCS file: /cvs/src/sbin/pfctl/pfctl.h,v
> retrieving revision 1.55
> diff -u -p -r1.55 pfctl.h
> --- pfctl.h   11 Aug 2017 22:30:38 -0000      1.55
> +++ pfctl.h   22 Jul 2018 11:35:05 -0000
> @@ -92,6 +92,7 @@ struct segment {
>  };
>  
>  void  print_addr(struct pf_addr_wrap *, sa_family_t, int);
> +void  print_addr_str(sa_family_t, struct pf_addr *);
>  void  print_host(struct pf_addr *, u_int16_t p, sa_family_t, u_int16_t, 
> const char *, int);
>  void  print_seq(struct pfsync_state_peer *);
>  void  print_state(struct pfsync_state *, int);
> Index: pfctl_parser.c
> ===================================================================
> RCS file: /cvs/src/sbin/pfctl/pfctl_parser.c,v
> retrieving revision 1.321
> diff -u -p -r1.321 pfctl_parser.c
> --- pfctl_parser.c    10 Jul 2018 09:30:49 -0000      1.321
> +++ pfctl_parser.c    22 Jul 2018 11:35:06 -0000
> @@ -1092,14 +1092,8 @@ print_rule(struct pf_rule *r, const char
>       case PF_DIVERT_NONE:
>               break;
>       case PF_DIVERT_TO: {
> -             /* XXX cut&paste from print_addr */
> -             char buf[48];
> -
>               printf(" divert-to ");
> -             if (inet_ntop(r->af, &r->divert.addr, buf, sizeof(buf)) == NULL)
> -                     printf("?");
> -             else
> -                     printf("%s", buf);
> +             print_addr_str(r->af, &r->divert.addr);
>               printf(" port %u", ntohs(r->divert.port));
>               break;
>       }
> ===================================================================
> Stats: --- 26 lines 559 chars
> Stats: +++ 18 lines 417 chars
> Stats: -8 lines
> Stats: -142 chars
> 

Reply via email to