Loading fs/nfsd/nfsd.h +32 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/sunrpc/svc.h> #include <linux/sunrpc/svc_xprt.h> #include <linux/sunrpc/msg_prot.h> #include <linux/sunrpc/addr.h> #include <uapi/linux/nfsd/debug.h> Loading Loading @@ -387,6 +388,37 @@ void nfsd_lockd_shutdown(void); extern const u32 nfsd_suppattrs[3][3]; static inline u32 nfsd4_set_netaddr(struct sockaddr *addr, struct nfs42_netaddr *netaddr) { struct sockaddr_in *sin = (struct sockaddr_in *)addr; struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr; unsigned int port; size_t ret_addr, ret_port; switch (addr->sa_family) { case AF_INET: port = ntohs(sin->sin_port); sprintf(netaddr->netid, "tcp"); netaddr->netid_len = 3; break; case AF_INET6: port = ntohs(sin6->sin6_port); sprintf(netaddr->netid, "tcp6"); netaddr->netid_len = 4; break; default: return nfserr_inval; } ret_addr = rpc_ntop(addr, netaddr->addr, sizeof(netaddr->addr)); ret_port = snprintf(netaddr->addr + ret_addr, RPCBIND_MAXUADDRLEN + 1 - ret_addr, ".%u.%u", port >> 8, port & 0xff); WARN_ON(ret_port >= RPCBIND_MAXUADDRLEN + 1 - ret_addr); netaddr->addr_len = ret_addr + ret_port; return 0; } static inline bool bmval_is_subset(const u32 *bm1, const u32 *bm2) { return !((bm1[0] & ~bm2[0]) || Loading Loading
fs/nfsd/nfsd.h +32 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/sunrpc/svc.h> #include <linux/sunrpc/svc_xprt.h> #include <linux/sunrpc/msg_prot.h> #include <linux/sunrpc/addr.h> #include <uapi/linux/nfsd/debug.h> Loading Loading @@ -387,6 +388,37 @@ void nfsd_lockd_shutdown(void); extern const u32 nfsd_suppattrs[3][3]; static inline u32 nfsd4_set_netaddr(struct sockaddr *addr, struct nfs42_netaddr *netaddr) { struct sockaddr_in *sin = (struct sockaddr_in *)addr; struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr; unsigned int port; size_t ret_addr, ret_port; switch (addr->sa_family) { case AF_INET: port = ntohs(sin->sin_port); sprintf(netaddr->netid, "tcp"); netaddr->netid_len = 3; break; case AF_INET6: port = ntohs(sin6->sin6_port); sprintf(netaddr->netid, "tcp6"); netaddr->netid_len = 4; break; default: return nfserr_inval; } ret_addr = rpc_ntop(addr, netaddr->addr, sizeof(netaddr->addr)); ret_port = snprintf(netaddr->addr + ret_addr, RPCBIND_MAXUADDRLEN + 1 - ret_addr, ".%u.%u", port >> 8, port & 0xff); WARN_ON(ret_port >= RPCBIND_MAXUADDRLEN + 1 - ret_addr); netaddr->addr_len = ret_addr + ret_port; return 0; } static inline bool bmval_is_subset(const u32 *bm1, const u32 *bm2) { return !((bm1[0] & ~bm2[0]) || Loading