continue;
                if (host->h_server != server)
                        continue;
-               if (!nlm_cmp_addr(&host->h_saddr, ssin))
+               if (!nlm_cmp_addr(nlm_srcaddr_in(host), ssin))
                        continue;
 
                /* Move to head of hash chain. */
        memcpy(nlm_addr(host), sin, sizeof(*sin));
        host->h_addrlen = sizeof(*sin);
        nlm_clear_port(nlm_addr(host));
-       host->h_saddr      = *ssin;
+       memcpy(nlm_srcaddr(host), ssin, sizeof(*ssin));
        host->h_version    = version;
        host->h_proto      = proto;
        host->h_rpcclnt    = NULL;
 
        nlm_display_address((struct sockaddr *)&host->h_addr,
                                host->h_addrbuf, sizeof(host->h_addrbuf));
-       nlm_display_address((struct sockaddr *)&host->h_saddr,
-                               host->h_saddrbuf, sizeof(host->h_saddrbuf));
+       nlm_display_address((struct sockaddr *)&host->h_srcaddr,
+                               host->h_srcaddrbuf, sizeof(host->h_srcaddrbuf));
 
        dprintk("lockd: nlm_lookup_host created host %s\n",
                        host->h_name);
        struct rpc_clnt *clnt;
 
        dprintk("lockd: nlm_bind_host %s (%s), my addr=%s\n",
-                       host->h_name, host->h_addrbuf, host->h_saddrbuf);
+                       host->h_name, host->h_addrbuf, host->h_srcaddrbuf);
 
        /* Lock host handle */
        mutex_lock(&host->h_mutex);
                        .protocol       = host->h_proto,
                        .address        = nlm_addr(host),
                        .addrsize       = host->h_addrlen,
-                       .saddress       = (struct sockaddr *)&host->h_saddr,
+                       .saddress       = nlm_srcaddr(host),
                        .timeout        = &timeparms,
                        .servername     = host->h_name,
                        .program        = &nlm_program,
 
        struct hlist_node       h_hash;         /* doubly linked list */
        struct sockaddr_storage h_addr;         /* peer address */
        size_t                  h_addrlen;
-       struct sockaddr_in      h_saddr;        /* our address (optional) */
+       struct sockaddr_storage h_srcaddr;      /* our address (optional) */
        struct rpc_clnt *       h_rpcclnt;      /* RPC client to talk to peer */
        char *                  h_name;         /* remote hostname */
        u32                     h_version;      /* interface version */
        struct nsm_handle *     h_nsmhandle;    /* NSM status handle */
 
        char                    h_addrbuf[48],  /* address eyecatchers */
-                               h_saddrbuf[48];
+                               h_srcaddrbuf[48];
 };
 
 struct nsm_handle {
        return (struct sockaddr *)&host->h_addr;
 }
 
+static inline struct sockaddr_in *nlm_srcaddr_in(const struct nlm_host *host)
+{
+       return (struct sockaddr_in *)&host->h_srcaddr;
+}
+
+static inline struct sockaddr *nlm_srcaddr(const struct nlm_host *host)
+{
+       return (struct sockaddr *)&host->h_srcaddr;
+}
+
 /*
  * Map an fl_owner_t into a unique 32-bit "pid"
  */