@ -88,29 +88,32 @@ static inline void svc_xprt_get(struct svc_xprt *xprt)
kref_get ( & xprt - > xpt_ref ) ;
}
static inline void svc_xprt_set_local ( struct svc_xprt * xprt ,
struct sockaddr * sa , int salen )
const struct sockaddr * sa ,
const size_t salen )
{
memcpy ( & xprt - > xpt_local , sa , salen ) ;
xprt - > xpt_locallen = salen ;
}
static inline void svc_xprt_set_remote ( struct svc_xprt * xprt ,
struct sockaddr * sa , int salen )
const struct sockaddr * sa ,
const size_t salen )
{
memcpy ( & xprt - > xpt_remote , sa , salen ) ;
xprt - > xpt_remotelen = salen ;
}
static inline unsigned short svc_addr_port ( struct sockaddr * sa )
static inline unsigned short svc_addr_port ( const struct sockaddr * sa )
{
unsigned short ret = 0 ;
const struct sockaddr_in * sin = ( const struct sockaddr_in * ) sa ;
const struct sockaddr_in6 * sin6 = ( const struct sockaddr_in6 * ) sa ;
switch ( sa - > sa_family ) {
case AF_INET :
ret = ntohs ( ( ( struct sockaddr_in * ) sa ) - > sin_port ) ;
break ;
return ntohs ( sin - > sin_port ) ;
case AF_INET6 :
ret = ntohs ( ( ( struct sockaddr_in6 * ) sa ) - > sin6_port ) ;
break ;
return ntohs ( sin6 - > sin6_port ) ;
}
return ret ;
return 0 ;
}
static inline size_t svc_addr_len ( struct sockaddr * sa )
@ -124,36 +127,39 @@ static inline size_t svc_addr_len(struct sockaddr *sa)
return - EAFNOSUPPORT ;
}
static inline unsigned short svc_xprt_local_port ( struct svc_xprt * xprt )
static inline unsigned short svc_xprt_local_port ( const struct svc_xprt * xprt )
{
return svc_addr_port ( ( struct sockaddr * ) & xprt - > xpt_local ) ;
return svc_addr_port ( ( const struct sockaddr * ) & xprt - > xpt_local ) ;
}
static inline unsigned short svc_xprt_remote_port ( struct svc_xprt * xprt )
static inline unsigned short svc_xprt_remote_port ( const struct svc_xprt * xprt )
{
return svc_addr_port ( ( struct sockaddr * ) & xprt - > xpt_remote ) ;
return svc_addr_port ( ( const struct sockaddr * ) & xprt - > xpt_remote ) ;
}
static inline char * __svc_print_addr ( struct sockaddr * addr ,
char * buf , size_t len )
static inline char * __svc_print_addr ( const struct sockaddr * addr ,
char * buf , const size_t len )
{
const struct sockaddr_in * sin = ( const struct sockaddr_in * ) addr ;
const struct sockaddr_in6 * sin6 = ( const struct sockaddr_in6 * ) addr ;
switch ( addr - > sa_family ) {
case AF_INET :
snprintf ( buf , len , " %pI4, port=%u " ,
& ( ( struct sockaddr_in * ) addr ) - > sin_addr ,
ntohs ( ( ( struct sockaddr_in * ) addr ) - > sin_port ) ) ;
snprintf ( buf , len , " %pI4, port=%u " , & sin - > sin_addr ,
ntohs ( sin - > sin_port ) ) ;
break ;
case AF_INET6 :
snprintf ( buf , len , " %pI6, port=%u " ,
& ( ( struct sockaddr_ in6 * ) addr ) - > sin6_addr ,
ntohs ( ( ( struct sockaddr_ in6 * ) addr ) - > sin6_port ) ) ;
& s in6- > sin6_addr ,
ntohs ( s in6- > sin6_port ) ) ;
break ;
default :
snprintf ( buf , len , " unknown address type: %d " , addr - > sa_family ) ;
break ;
}
return buf ;
}
# endif /* SUNRPC_SVC_XPRT_H */