]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/lockd/lockd.h
NSM: Use sockaddr_storage for sm_addr field
[linux-2.6-omap-h63xx.git] / include / linux / lockd / lockd.h
index dbb87ab282e8fd55c718939cdcfa34c4adf2439b..b1dfa0b1d1bcdc5c3cb16521ad8fe0f7c195c33c 100644 (file)
@@ -38,8 +38,9 @@
  */
 struct nlm_host {
        struct hlist_node       h_hash;         /* doubly linked list */
-       struct sockaddr_in      h_addr;         /* peer address */
-       struct sockaddr_in      h_saddr;        /* our address (optional) */
+       struct sockaddr_storage h_addr;         /* peer address */
+       size_t                  h_addrlen;
+       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 */
@@ -61,17 +62,55 @@ struct nlm_host {
        struct list_head        h_granted;      /* Locks in GRANTED state */
        struct list_head        h_reclaim;      /* Locks in RECLAIM state */
        struct nsm_handle *     h_nsmhandle;    /* NSM status handle */
+
+       char                    h_addrbuf[48],  /* address eyecatchers */
+                               h_srcaddrbuf[48];
 };
 
 struct nsm_handle {
        struct list_head        sm_link;
        atomic_t                sm_count;
        char *                  sm_name;
-       struct sockaddr_in      sm_addr;
+       struct sockaddr_storage sm_addr;
+       size_t                  sm_addrlen;
        unsigned int            sm_monitored : 1,
                                sm_sticky : 1;  /* don't unmonitor */
+       char                    sm_addrbuf[48]; /* address eyecatcher */
 };
 
+/*
+ * Rigorous type checking on sockaddr type conversions
+ */
+static inline struct sockaddr_in *nlm_addr_in(const struct nlm_host *host)
+{
+       return (struct sockaddr_in *)&host->h_addr;
+}
+
+static inline struct sockaddr *nlm_addr(const struct nlm_host *host)
+{
+       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;
+}
+
+static inline struct sockaddr_in *nsm_addr_in(const struct nsm_handle *handle)
+{
+       return (struct sockaddr_in *)&handle->sm_addr;
+}
+
+static inline struct sockaddr *nsm_addr(const struct nsm_handle *handle)
+{
+       return (struct sockaddr *)&handle->sm_addr;
+}
+
 /*
  * Map an fl_owner_t into a unique 32-bit "pid"
  */