On Tue, Jun 13, 2023 at 10:57:06AM +0200, Theo Buehler wrote: > There are a lot of print_host() calls that have an explicit cast and > pass NULL, 0 as second and third arguments. This is responsible for a > lot of awkward line wrapping. The exlicit casts can be avoided by > using a function with a void * argument. This is no less typesafe than > having explicit casts.
ok tobhe@ > > Index: iked.h > =================================================================== > RCS file: /cvs/src/sbin/iked/iked.h,v > retrieving revision 1.215 > diff -u -p -r1.215 iked.h > --- iked.h 12 Jun 2023 09:02:31 -0000 1.215 > +++ iked.h 13 Jun 2023 08:47:59 -0000 > @@ -1252,6 +1252,8 @@ uint32_t > prefixlen2mask(uint8_t); > const char * > print_host(struct sockaddr *, char *, size_t); > +const char * > + print_addr(void *); > char *get_string(uint8_t *, size_t); > const char * > print_proto(uint8_t); > Index: ikev2.c > =================================================================== > RCS file: /cvs/src/sbin/iked/ikev2.c,v > retrieving revision 1.369 > diff -u -p -r1.369 ikev2.c > --- ikev2.c 13 Jun 2023 08:45:41 -0000 1.369 > +++ ikev2.c 13 Jun 2023 08:48:00 -0000 > @@ -669,8 +669,8 @@ ikev2_recv(struct iked *env, struct iked > print_map(hdr->ike_exchange, ikev2_exchange_map), > msg->msg_response ? "res" : "req", > msg->msg_msgid, > - print_host((struct sockaddr *)&msg->msg_peer, NULL, 0), > - print_host((struct sockaddr *)&msg->msg_local, NULL, 0), > + print_addr(&msg->msg_peer), > + print_addr(&msg->msg_local), > ibuf_length(msg->msg_data), > msg->msg_policy->pol_name); > log_debug("%s: ispi %s rspi %s", __func__, > @@ -783,8 +783,7 @@ ikev2_recv(struct iked *env, struct iked > sa->sa_fd = msg->msg_fd; > > log_debug("%s: updated SA to peer %s local %s", __func__, > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0)); > + print_addr(&sa->sa_peer.addr), print_addr(&sa->sa_local.addr)); > > done: > if (initiator) > @@ -1101,16 +1100,13 @@ ikev2_ike_auth_recv(struct iked *env, st > if (sa->sa_cp == IKEV2_CP_REPLY) { > if (sa->sa_cp_addr) > log_info("%s: obtained lease: %s", SPI_SA(sa, __func__), > - print_host((struct sockaddr *)&sa->sa_cp_addr->addr, > - NULL, 0)); > + print_addr(&sa->sa_cp_addr->addr)); > if (sa->sa_cp_addr6) > log_info("%s: obtained lease: %s", SPI_SA(sa, __func__), > - print_host((struct sockaddr > *)&sa->sa_cp_addr6->addr, > - NULL, 0)); > + print_addr(&sa->sa_cp_addr6->addr)); > if (sa->sa_cp_dns) > log_info("%s: obtained DNS: %s", SPI_SA(sa, __func__), > - print_host((struct sockaddr *)&sa->sa_cp_dns->addr, > - NULL, 0)); > + print_addr(&sa->sa_cp_dns->addr)); > } > > return ikev2_ike_auth(env, sa); > @@ -1296,8 +1292,7 @@ ikev2_enable_natt(struct iked *env, stru > > log_debug("%s: detected NAT, enabling UDP encapsulation," > " updated SA to peer %s local %s", __func__, > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0)); > + print_addr(&sa->sa_peer.addr), print_addr(&sa->sa_local.addr)); > } > > void > @@ -1318,9 +1313,7 @@ ikev2_init_ike_sa(struct iked *env, void > > if (ikev2_init_ike_sa_peer(env, pol, &pol->pol_peer, NULL)) > log_debug("%s: failed to initiate with peer %s", > - __func__, > - print_host((struct sockaddr *)&pol->pol_peer.addr, > - NULL, 0)); > + __func__, print_addr(&pol->pol_peer.addr)); > } > > timer_set(env, &env->sc_inittmr, ikev2_init_ike_sa, NULL); > @@ -2326,7 +2319,7 @@ ikev2_nat_detection(struct iked *env, st > frompeer ? "peer" : "local", > print_spi(betoh64(ispi), 8), > print_spi(betoh64(rspi), 8), > - print_host(src, NULL, 0)); > + print_addr(src)); > ss = src; > break; > case IKEV2_N_NAT_DETECTION_DESTINATION_IP: > @@ -2334,7 +2327,7 @@ ikev2_nat_detection(struct iked *env, st > frompeer ? "peer" : "local", > print_spi(betoh64(ispi), 8), > print_spi(betoh64(rspi), 8), > - print_host(dst, NULL, 0)); > + print_addr(dst)); > ss = dst; > break; > default: > @@ -5225,12 +5218,12 @@ ikev2_ike_sa_keepalive(struct iked *env, > (struct sockaddr *)&sa->sa_local.addr, sa->sa_local.addr.ss_len) > == -1) > log_warn("%s: sendtofrom: peer %s local %s", __func__, > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0)); > + print_addr(&sa->sa_peer.addr), > + print_addr(&sa->sa_local.addr)); > else > log_debug("%s: peer %s local %s", __func__, > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0)); > + print_addr(&sa->sa_peer.addr), > + print_addr(&sa->sa_local.addr)); > ikestat_inc(env, ikes_keepalive_sent); > timer_add(env, &sa->sa_keepalive, IKED_IKE_SA_KEEPALIVE_TIMEOUT); > } > @@ -6557,18 +6550,15 @@ ikev2_childsa_enable(struct iked *env, s > fputs(", ", flowf); > fprintf(flowf, "%s-%s/%d%s%s%s%s%s=%s/%d(%u)%s", > print_map(flow->flow_saproto, ikev2_saproto_map), > - print_host((struct sockaddr *)&flow->flow_src.addr, > - NULL, 0), > + print_addr(&flow->flow_src.addr), > flow->flow_src.addr_mask, > flow->flow_prenat.addr_af != 0 ? "[": "", > flow->flow_prenat.addr_af != 0 ? > - print_host((struct sockaddr *) > - &flow->flow_prenat.addr, NULL, 0) : "", > + print_addr(&flow->flow_prenat.addr) : "", > flow->flow_prenat.addr_af != 0 ? "/" : "", > flow->flow_prenat.addr_af != 0 ? prenat_mask : "", > flow->flow_prenat.addr_af != 0 ? "]": "", > - print_host((struct sockaddr *)&flow->flow_dst.addr, > - NULL, 0), > + print_addr(&flow->flow_dst.addr), > flow->flow_dst.addr_mask, > flow->flow_ipproto, > reload ? "-R" : ""); > @@ -6580,8 +6570,7 @@ ikev2_childsa_enable(struct iked *env, s > memcpy(&sa->sa_peer_loaded, &sa->sa_peer, > sizeof(sa->sa_peer_loaded)); > log_debug("%s: remember SA peer %s", __func__, > - print_host((struct sockaddr *)&sa->sa_peer_loaded.addr, > - NULL, 0)); > + print_addr(&sa->sa_peer_loaded.addr)); > } > > fflush(spif); > @@ -7129,8 +7118,7 @@ ikev2_cp_setaddr_pool(struct iked *env, > log_info( > "%s: giving up assigned address %s to IKESA %s", > SPI_SA(osa, __func__), > - print_host((struct sockaddr *) > - &sa->sa_addrpool->addr, NULL, 0), > + print_addr(&sa->sa_addrpool->addr), > print_spi(sa->sa_hdr.sh_ispi, 8)); > } > if (sa->sa_addrpool6) { > @@ -7138,8 +7126,7 @@ ikev2_cp_setaddr_pool(struct iked *env, > log_info( > "%s: giving up assigned v6 address %s to IKESA %s", > SPI_SA(osa, __func__), > - print_host((struct sockaddr *) > - &sa->sa_addrpool6->addr, NULL, 0), > + print_addr(&sa->sa_addrpool6->addr), > print_spi(sa->sa_hdr.sh_ispi, 8)); > } > if (family == AF_INET && sa->sa_addrpool != NULL) > @@ -7268,7 +7255,7 @@ ikev2_cp_setaddr_pool(struct iked *env, > if (ikev2_print_id(IKESA_DSTID(sa), idstr, sizeof(idstr)) == -1) > bzero(idstr, sizeof(idstr)); > log_info("%sassigned address %s to %s%s", SPI_SA(sa, NULL), > - print_host((struct sockaddr *)&addr.addr, NULL, 0), > + print_addr(&addr.addr), > idstr, requested ? " (requested by peer)" : ""); > return (0); > } > @@ -7374,8 +7361,8 @@ ikev2_update_sa_addresses(struct iked *e > return -1; > > log_info("%s: old %s new %s", SPI_SA(sa, __func__), > - print_host((struct sockaddr *)&sa->sa_peer_loaded.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0)); > + print_addr(&sa->sa_peer_loaded.addr), > + print_addr(&sa->sa_peer.addr)); > > TAILQ_FOREACH(csa, &sa->sa_childsas, csa_entry) { > if (!csa->csa_loaded) > @@ -7449,11 +7436,10 @@ ikev2_info_sa(struct iked *env, int dolo > msg, sa, > print_spi(sa->sa_hdr.sh_rspi, 8), > print_spi(sa->sa_hdr.sh_ispi, 8), > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0), > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), > + print_addr(&sa->sa_local.addr), > + print_addr(&sa->sa_peer.addr), > idstr, > - sa->sa_addrpool ? > - print_host((struct sockaddr *)&sa->sa_addrpool->addr, NULL, 0) : "", > + sa->sa_addrpool ? print_addr(&sa->sa_addrpool->addr) : "", > print_map(sa->sa_state, ikev2_state_map), > sa->sa_hdr.sh_initiator ? 'i' : 'r', > sa->sa_natt ? " natt" : "", > @@ -7484,8 +7470,8 @@ ikev2_info_csa(struct iked *env, int dol > print_map(csa->csa_saproto, ikev2_saproto_map), > print_spi(csa->csa_spi.spi, csa->csa_spi.spi_size), > csa->csa_dir == IPSP_DIRECTION_IN ? "in" : "out", > - print_host((struct sockaddr *)&csa->csa_local->addr, NULL, 0), > - print_host((struct sockaddr *)&csa->csa_peer->addr, NULL, 0), > + print_addr(&csa->csa_local->addr), > + print_addr(&csa->csa_peer->addr), > csa->csa_loaded ? "L" : "", > csa->csa_rekey ? "R" : "", > csa->csa_allocated ? "A" : "", > @@ -7524,13 +7510,13 @@ ikev2_info_flow(struct iked *env, int do > "%s: %p %s %s %s/%d -> %s/%d %s%s%s%s%s[%u]@%d (%s) @%p\n", msg, > flow, > print_map(flow->flow_saproto, ikev2_saproto_map), > flow->flow_dir == IPSP_DIRECTION_IN ? "in" : "out", > - print_host((struct sockaddr *)&flow->flow_src.addr, NULL, 0), > + print_addr(&flow->flow_src.addr), > flow->flow_src.addr_mask, > - print_host((struct sockaddr *)&flow->flow_dst.addr, NULL, 0), > + print_addr(&flow->flow_dst.addr), > flow->flow_dst.addr_mask, > flow->flow_prenat.addr_af != 0 ? "[": "", > - flow->flow_prenat.addr_af != 0 ? print_host((struct sockaddr *) > - &flow->flow_prenat.addr, NULL, 0) : "", > + flow->flow_prenat.addr_af != 0 ? > + print_addr(&flow->flow_prenat.addr) : "", > flow->flow_prenat.addr_af != 0 ? "/" : "", > flow->flow_prenat.addr_af != 0 ? prenat_mask : "", > flow->flow_prenat.addr_af != 0 ? "] ": "", > @@ -7616,14 +7602,12 @@ ikev2_log_established(struct iked_sa *sa > log_info( > "%sestablished peer %s[%s] local %s[%s]%s%s%s%s policy '%s'%s" > " (enc %s%s%s group %s prf %s)", SPI_SA(sa, NULL), > - print_host((struct sockaddr *)&sa->sa_peer.addr, NULL, 0), dstid, > - print_host((struct sockaddr *)&sa->sa_local.addr, NULL, 0), srcid, > + print_addr(&sa->sa_peer.addr), dstid, > + print_addr(&sa->sa_local.addr), srcid, > sa->sa_addrpool ? " assigned " : "", > - sa->sa_addrpool ? > - print_host((struct sockaddr *)&sa->sa_addrpool->addr, NULL, 0) : "", > + sa->sa_addrpool ? print_addr(&sa->sa_addrpool->addr) : "", > sa->sa_addrpool6 ? " assigned " : "", > - sa->sa_addrpool6 ? > - print_host((struct sockaddr *)&sa->sa_addrpool6->addr, NULL, 0) : > "", > + sa->sa_addrpool6 ? print_addr(&sa->sa_addrpool6->addr) : "", > sa->sa_policy ? sa->sa_policy->pol_name : "", > sa->sa_hdr.sh_initiator ? " as initiator" : " as responder", > print_xf(sa->sa_encr->encr_id, cipher_keylength(sa->sa_encr) - > Index: ikev2_msg.c > =================================================================== > RCS file: /cvs/src/sbin/iked/ikev2_msg.c,v > retrieving revision 1.94 > diff -u -p -r1.94 ikev2_msg.c > --- ikev2_msg.c 6 Jun 2023 13:27:49 -0000 1.94 > +++ ikev2_msg.c 13 Jun 2023 08:48:00 -0000 > @@ -285,8 +285,8 @@ ikev2_msg_send(struct iked *env, struct > print_map(exchange, ikev2_exchange_map), > (flags & IKEV2_FLAG_RESPONSE) ? "res" : "req", > betoh32(hdr->ike_msgid), > - print_host((struct sockaddr *)&msg->msg_peer, NULL, 0), > - print_host((struct sockaddr *)&msg->msg_local, NULL, 0), > + print_addr(&msg->msg_peer), > + print_addr(&msg->msg_local), > ibuf_length(buf), isnatt ? ", NAT-T" : ""); > > if (isnatt) { > @@ -1290,8 +1290,8 @@ ikev2_msg_retransmit_response(struct ike > SPI_SA(sa, NULL), > print_map(exchange, ikev2_exchange_map), > m->msg_msgid, > - print_host((struct sockaddr *)&m->msg_local, NULL, 0), > - print_host((struct sockaddr *)&m->msg_peer, NULL, 0)); > + print_addr(&m->msg_local), > + print_addr(&m->msg_peer)); > } > > timer_add(env, &mr->mrt_timer, IKED_RESPONSE_TIMEOUT); > @@ -1333,8 +1333,8 @@ ikev2_msg_retransmit_timeout(struct iked > "local %s", SPI_SA(sa, NULL), mr->mrt_tries + 1, > print_map(msg->msg_exchange, ikev2_exchange_map), > msg->msg_msgid, > - print_host((struct sockaddr *)&msg->msg_peer, NULL, > 0), > - print_host((struct sockaddr *)&msg->msg_local, > NULL, 0)); > + print_addr(&msg->msg_peer), > + print_addr(&msg->msg_local)); > } > /* Exponential timeout */ > timer_add(env, &mr->mrt_timer, > Index: pfkey.c > =================================================================== > RCS file: /cvs/src/sbin/iked/pfkey.c,v > retrieving revision 1.81 > diff -u -p -r1.81 pfkey.c > --- pfkey.c 22 Jul 2022 15:33:53 -0000 1.81 > +++ pfkey.c 13 Jun 2023 08:48:00 -0000 > @@ -1853,7 +1853,7 @@ pfkey_process(struct iked *env, struct p > flow.flow_peer = &peer; > > log_debug("%s: acquire request (peer %s)", __func__, > - print_host(speer, NULL, 0)); > + print_addr(speer)); > > /* get the matching flow */ > bzero(&smsg, sizeof(smsg)); > @@ -1992,9 +1992,9 @@ pfkey_process(struct iked *env, struct p > > log_debug("%s: flow %s from %s/%s to %s/%s via %s", __func__, > flow.flow_dir == IPSP_DIRECTION_IN ? "in" : "out", > - print_host(ssrc, NULL, 0), print_host(smask, NULL, 0), > - print_host(sdst, NULL, 0), print_host(dmask, NULL, 0), > - print_host(speer, NULL, 0)); > + print_addr(ssrc), print_addr(smask), > + print_addr(sdst), print_addr(dmask), > + print_addr(speer)); > > ret = ikev2_child_sa_acquire(env, &flow); > > Index: policy.c > =================================================================== > RCS file: /cvs/src/sbin/iked/policy.c,v > retrieving revision 1.94 > diff -u -p -r1.94 policy.c > --- policy.c 23 May 2023 13:12:19 -0000 1.94 > +++ policy.c 13 Jun 2023 08:48:00 -0000 > @@ -398,10 +398,8 @@ sa_state(struct iked *env, struct iked_s > case IKEV2_STATE_CLOSED: > log_debug("%s: %s -> %s from %s to %s policy '%s'", > SPI_SA(sa, __func__), a, b, > - print_host((struct sockaddr *)&sa->sa_peer.addr, > - NULL, 0), > - print_host((struct sockaddr *)&sa->sa_local.addr, > - NULL, 0), > + print_addr(&sa->sa_peer.addr), > + print_addr(&sa->sa_local.addr), > sa->sa_policy ? sa->sa_policy->pol_name : > "<unknown>"); > break; > Index: print.c > =================================================================== > RCS file: /cvs/src/sbin/iked/print.c,v > retrieving revision 1.3 > diff -u -p -r1.3 print.c > --- print.c 26 Oct 2021 17:31:22 -0000 1.3 > +++ print.c 13 Jun 2023 08:48:00 -0000 > @@ -112,9 +112,7 @@ print_policy(struct iked_policy *pol) > print_verbose(" rdomain %d", pol->pol_rdomain); > > RB_FOREACH(flow, iked_flows, &pol->pol_flows) { > - print_verbose(" from %s", > - print_host((struct sockaddr *)&flow->flow_src.addr, NULL, > - 0)); > + print_verbose(" from %s", print_addr(&flow->flow_src.addr)); > if (flow->flow_src.addr_af != AF_UNSPEC && > flow->flow_src.addr_net) > print_verbose("/%d", flow->flow_src.addr_mask); > @@ -122,9 +120,7 @@ print_policy(struct iked_policy *pol) > print_verbose(" port %d", > ntohs(flow->flow_src.addr_port)); > > - print_verbose(" to %s", > - print_host((struct sockaddr *)&flow->flow_dst.addr, NULL, > - 0)); > + print_verbose(" to %s", print_addr(&flow->flow_dst.addr)); > if (flow->flow_dst.addr_af != AF_UNSPEC && > flow->flow_dst.addr_net) > print_verbose("/%d", flow->flow_dst.addr_mask); > @@ -134,16 +130,12 @@ print_policy(struct iked_policy *pol) > } > > if ((pol->pol_flags & IKED_POLICY_DEFAULT) == 0) { > - print_verbose(" local %s", > - print_host((struct sockaddr *)&pol->pol_local.addr, NULL, > - 0)); > + print_verbose(" local %s", print_addr(&pol->pol_local.addr)); > if (pol->pol_local.addr.ss_family != AF_UNSPEC && > pol->pol_local.addr_net) > print_verbose("/%d", pol->pol_local.addr_mask); > > - print_verbose(" peer %s", > - print_host((struct sockaddr *)&pol->pol_peer.addr, NULL, > - 0)); > + print_verbose(" peer %s", print_addr(&pol->pol_peer.addr)); > if (pol->pol_peer.addr.ss_family != AF_UNSPEC && > pol->pol_peer.addr_net) > print_verbose("/%d", pol->pol_peer.addr_mask); > @@ -235,8 +227,7 @@ print_policy(struct iked_policy *pol) > cfg = &pol->pol_cfg[i]; > print_verbose(" config %s %s", print_xf(cfg->cfg_type, > cfg->cfg.address.addr_af, cpxfs), > - print_host((struct sockaddr *)&cfg->cfg.address.addr, NULL, > - 0)); > + print_addr(&cfg->cfg.address.addr)); > } > > if (pol->pol_iface != 0 && if_indextoname(pol->pol_iface, iface) != > NULL) > Index: util.c > =================================================================== > RCS file: /cvs/src/sbin/iked/util.c,v > retrieving revision 1.40 > diff -u -p -r1.40 util.c > --- util.c 15 Aug 2020 11:31:17 -0000 1.40 > +++ util.c 13 Jun 2023 08:48:00 -0000 > @@ -669,6 +669,12 @@ print_host(struct sockaddr *sa, char *bu > return (buf); > } > > +const char * > +print_addr(void *addr) > +{ > + return print_host(addr, NULL, 0); > +} > + > char * > get_string(uint8_t *ptr, size_t len) > { > Index: vroute.c > =================================================================== > RCS file: /cvs/src/sbin/iked/vroute.c,v > retrieving revision 1.18 > diff -u -p -r1.18 vroute.c > --- vroute.c 10 Feb 2023 19:51:08 -0000 1.18 > +++ vroute.c 13 Jun 2023 08:48:00 -0000 > @@ -840,9 +840,9 @@ vroute_doroute(struct iked *env, int fla > flags & RTF_HOST ? "H" : "", > flags & RTF_GATEWAY ? "G" : "", > addrs, > - addrs & RTA_DST ? print_host(dest, NULL, 0) : "<>", > - addrs & RTA_NETMASK ? print_host(mask, NULL, 0) : "<>", > - addrs & RTA_GATEWAY ? print_host(addr, NULL, 0) : "<>"); > + addrs & RTA_DST ? print_addr(dest) : "<>", > + addrs & RTA_NETMASK ? print_addr(mask) : "<>", > + addrs & RTA_GATEWAY ? print_addr(addr) : "<>"); > > if (writev(ivr->ivr_rtsock, iov, iovcnt) == -1) { > if ((type == RTM_ADD && errno != EEXIST) || > @@ -933,9 +933,7 @@ vroute_doaddr(struct iked *env, char *if > memcpy(&req.ifra_mask, mask, sizeof(req.ifra_addr)); > > log_debug("%s: %s inet %s netmask %s", __func__, > - add ? "add" : "del", > - print_host((struct sockaddr *)addr, NULL, 0), > - print_host((struct sockaddr *)mask, NULL, 0)); > + add ? "add" : "del", print_addr(addr), print_addr(mask)); > > ioreq = add ? SIOCAIFADDR : SIOCDIFADDR; > if (ioctl(ivr->ivr_iosock, ioreq, &req) == -1) { > @@ -955,9 +953,7 @@ vroute_doaddr(struct iked *env, char *if > sizeof(req6.ifra_prefixmask)); > > log_debug("%s: %s inet6 %s netmask %s", __func__, > - add ? "add" : "del", > - print_host((struct sockaddr *)addr, NULL, 0), > - print_host((struct sockaddr *)mask, NULL, 0)); > + add ? "add" : "del", print_addr(addr), print_addr(mask)); > > ioreq = add ? SIOCAIFADDR_IN6 : SIOCDIFADDR_IN6; > if (ioctl(ivr->ivr_iosock6, ioreq, &req6) == -1) { >