Hi,
We can avoid some casts by using the sa field of union sockaddr_union.
ok?
bluhm
Index: net/pfkeyv2.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/net/pfkeyv2.c,v
retrieving revision 1.151
diff -u -p -r1.151 pfkeyv2.c
--- net/pfkeyv2.c 14 Feb 2017 09:47:40 -0000 1.151
+++ net/pfkeyv2.c 24 Feb 2017 17:56:15 -0000
@@ -413,7 +413,7 @@ pfkeyv2_policy(struct ipsec_acquire *ipa
break;
#endif /* INET6 */
}
- export_address(&p, (struct sockaddr *) &sunion);
+ export_address(&p, &sunion.sa);
if (dir == IPSP_DIRECTION_OUT)
headers[SADB_X_EXT_SRC_MASK] = p;
@@ -432,7 +432,7 @@ pfkeyv2_policy(struct ipsec_acquire *ipa
break;
#endif /* INET6 */
}
- export_address(&p, (struct sockaddr *) &sunion);
+ export_address(&p, &sunion.sa);
if (dir == IPSP_DIRECTION_OUT)
headers[SADB_X_EXT_DST_FLOW] = p;
@@ -451,7 +451,7 @@ pfkeyv2_policy(struct ipsec_acquire *ipa
break;
#endif /* INET6 */
}
- export_address(&p, (struct sockaddr *) &sunion);
+ export_address(&p, &sunion.sa);
if (dir == IPSP_DIRECTION_OUT)
headers[SADB_X_EXT_DST_MASK] = p;
@@ -470,7 +470,7 @@ pfkeyv2_policy(struct ipsec_acquire *ipa
break;
#endif /* INET6 */
}
- export_address(&p, (struct sockaddr *) &sunion);
+ export_address(&p, &sunion.sa);
headers[SADB_X_EXT_FLOW_TYPE] = p;
sp = p;
@@ -607,11 +607,11 @@ pfkeyv2_get(struct tdb *sa, void **heade
/* Export TDB source address */
headers[SADB_EXT_ADDRESS_SRC] = p;
- export_address(&p, (struct sockaddr *) &sa->tdb_src);
+ export_address(&p, &sa->tdb_src.sa);
/* Export TDB destination address */
headers[SADB_EXT_ADDRESS_DST] = p;
- export_address(&p, (struct sockaddr *) &sa->tdb_dst);
+ export_address(&p, &sa->tdb_dst.sa);
/* Export source/destination identities, if present */
if (sa->tdb_ids)
@@ -883,10 +883,8 @@ pfkeyv2_send(struct socket *socket, void
&sa1->tdb_sproto, 0)))
goto ret;
- import_address((struct sockaddr *) &sa1->tdb_src,
- headers[SADB_EXT_ADDRESS_SRC]);
- import_address((struct sockaddr *) &sa1->tdb_dst,
- headers[SADB_EXT_ADDRESS_DST]);
+ import_address(&sa1->tdb_src.sa, headers[SADB_EXT_ADDRESS_SRC]);
+ import_address(&sa1->tdb_dst.sa, headers[SADB_EXT_ADDRESS_DST]);
/* Find an unused SA identifier */
sprng = (struct sadb_spirange *) headers[SADB_EXT_SPIRANGE];
@@ -974,9 +972,9 @@ pfkeyv2_send(struct socket *socket, void
/* Initialize SA */
import_sa(newsa, headers[SADB_EXT_SA], &ii);
- import_address((struct sockaddr *) &newsa->tdb_src,
+ import_address(&newsa->tdb_src.sa,
headers[SADB_EXT_ADDRESS_SRC]);
- import_address((struct sockaddr *) &newsa->tdb_dst,
+ import_address(&newsa->tdb_dst.sa,
headers[SADB_EXT_ADDRESS_DST]);
import_lifetime(newsa,
headers[SADB_EXT_LIFETIME_CURRENT],
@@ -1125,9 +1123,9 @@ pfkeyv2_send(struct socket *socket, void
}
import_sa(newsa, headers[SADB_EXT_SA], &ii);
- import_address((struct sockaddr *) &newsa->tdb_src,
+ import_address(&newsa->tdb_src.sa,
headers[SADB_EXT_ADDRESS_SRC]);
- import_address((struct sockaddr *) &newsa->tdb_dst,
+ import_address(&newsa->tdb_dst.sa,
headers[SADB_EXT_ADDRESS_DST]);
import_lifetime(newsa,
@@ -1958,10 +1956,10 @@ pfkeyv2_expire(struct tdb *sa, u_int16_t
PFKEYV2_LIFETIME_SOFT : PFKEYV2_LIFETIME_HARD);
headers[SADB_EXT_ADDRESS_SRC] = p;
- export_address(&p, (struct sockaddr *) &sa->tdb_src);
+ export_address(&p, &sa->tdb_src.sa);
headers[SADB_EXT_ADDRESS_DST] = p;
- export_address(&p, (struct sockaddr *) &sa->tdb_dst);
+ export_address(&p, &sa->tdb_dst.sa);
if ((rval = pfkeyv2_sendmessage(headers, PFKEYV2_SENDMESSAGE_BROADCAST,
NULL, 0, 0, sa->tdb_rdomain)) != 0)
@@ -2124,13 +2122,13 @@ pfkeyv2_dump_policy(struct ipsec_policy
/* Local address. */
if (ipo->ipo_src.sa.sa_family) {
headers[SADB_EXT_ADDRESS_SRC] = p;
- export_address(&p, (struct sockaddr *)&ipo->ipo_src);
+ export_address(&p, &ipo->ipo_src.sa);
}
/* Remote address. */
if (ipo->ipo_dst.sa.sa_family) {
headers[SADB_EXT_ADDRESS_DST] = p;
- export_address(&p, (struct sockaddr *)&ipo->ipo_dst);
+ export_address(&p, &ipo->ipo_dst.sa);
}
/* Get actual flow. */