asconf_param->param_hdr.type != SCTP_PARAM_SET_PRIMARY)
                return SCTP_ERROR_UNKNOWN_PARAM;
 
-       switch (addr_param->v4.param_hdr.type) {
+       switch (addr_param->p.type) {
        case SCTP_PARAM_IPV6_ADDRESS:
                if (!asoc->peer.ipv6_address)
                        return SCTP_ERROR_DNS_FAILED;
                return SCTP_ERROR_DNS_FAILED;
        }
 
-       af = sctp_get_af_specific(param_type2af(addr_param->v4.param_hdr.type));
+       af = sctp_get_af_specific(param_type2af(addr_param->p.type));
        if (unlikely(!af))
                return SCTP_ERROR_DNS_FAILED;
 
        /* Skip the address parameter and store a pointer to the first
         * asconf parameter.
         */
-       length = ntohs(addr_param->v4.param_hdr.length);
+       length = ntohs(addr_param->p.length);
        asconf_param = (sctp_addip_param_t *)((void *)addr_param + length);
        chunk_len -= length;
 
                        ((void *)asconf_param + sizeof(sctp_addip_param_t));
 
        /* We have checked the packet before, so we do not check again. */
-       af = sctp_get_af_specific(param_type2af(addr_param->v4.param_hdr.type));
+       af = sctp_get_af_specific(param_type2af(addr_param->p.type));
        af->from_addr_param(&addr, addr_param, htons(bp->port), 0);
 
        switch (asconf_param->param_hdr.type) {
        /* Skip the address parameter in the last asconf sent and store a
         * pointer to the first asconf parameter.
         */
-       length = ntohs(addr_param->v4.param_hdr.length);
+       length = ntohs(addr_param->p.length);
        asconf_param = (sctp_addip_param_t *)((void *)addr_param + length);
        asconf_len -= length;