/* Add all the remotes. */
HMAP_FOR_EACH (ofconn, hmap_node, &mgr->controllers) {
const char *target = rconn_get_target(ofconn->rconn);
- struct sockaddr_storage ss;
+ union {
+ struct sockaddr_storage ss;
+ struct sockaddr_in in;
+ } sa;
if (ofconn->band == OFPROTO_IN_BAND
- && stream_parse_target_with_default_port(target, OFP_OLD_PORT, &ss)
- && ss.ss_family == AF_INET) {
- addrs[n_addrs++] = *(struct sockaddr_in *) &ss;
+ && stream_parse_target_with_default_port(target, OFP_OLD_PORT,
+ &sa.ss)
+ && sa.ss.ss_family == AF_INET) {
+ addrs[n_addrs++] = sa.in;
}
}
for (i = 0; i < mgr->n_extra_remotes; i++) {
}
SSET_FOR_EACH (target, targets) {
- struct sockaddr_storage ss;
+ union {
+ struct sockaddr_storage ss;
+ struct sockaddr_in sin;
+ } sa;
char name[IFNAMSIZ];
- if (inet_parse_active(target, SFL_DEFAULT_COLLECTOR_PORT, &ss)
- && ss.ss_family == AF_INET) {
- struct sockaddr_in *sin = (struct sockaddr_in *) &ss;
- if (route_table_get_name(sin->sin_addr.s_addr, name)
+ if (inet_parse_active(target, SFL_DEFAULT_COLLECTOR_PORT, &sa.ss)
+ && sa.ss.ss_family == AF_INET) {
+ if (route_table_get_name(sa.sin.sin_addr.s_addr, name)
&& !netdev_get_in4_by_name(name, &in4)) {
goto success;
}
struct xlate_cache *xcache OVS_GUARDED; /* Cache for xlate entries that
* are affected by this ukey.
* Used for stats and learning.*/
- struct odputil_keybuf key_buf; /* Memory for 'key'. */
+ union {
+ struct odputil_keybuf key_buf; /* Memory for 'key'. */
+ struct nlattr key_buf_nla;
+ };
};
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
struct udpif_key *ukey = xmalloc(sizeof *ukey);
ovs_mutex_init(&ukey->mutex);
- ukey->key = (struct nlattr *) &ukey->key_buf;
+ ukey->key = &ukey->key_buf_nla;
memcpy(&ukey->key_buf, key, key_len);
ukey->key_len = key_len;
managers = xmalloc(sset_count(&targets) * sizeof *managers);
SSET_FOR_EACH (target, &targets) {
- struct sockaddr_storage ss;
+ union {
+ struct sockaddr_storage ss;
+ struct sockaddr_in in;
+ } sa;
if (stream_parse_target_with_default_port(target, OVSDB_OLD_PORT,
- &ss)
- && ss.ss_family == AF_INET) {
- managers[n_managers++] = *(struct sockaddr_in *) &ss;
+ &sa.ss)
+ && sa.ss.ss_family == AF_INET) {
+ managers[n_managers++] = sa.in;
}
}
}