@ -1998,12 +1998,11 @@ static void smk_ipv6_port_label(struct socket *sock, struct sockaddr *address)
*
* Create or update the port list entry
*/
static int smk_ipv6_port_check ( struct sock * sk , struct sockaddr * address ,
static int smk_ipv6_port_check ( struct sock * sk , struct sockaddr_in6 * address ,
int act )
{
__be16 * bep ;
__be32 * be32p ;
struct sockaddr_in6 * addr6 ;
struct smk_port_label * spp ;
struct socket_smack * ssp = sk - > sk_security ;
struct smack_known * skp ;
@ -2025,10 +2024,9 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr *address,
/*
* Get the IP address and port from the address .
*/
addr6 = ( struct sockaddr_in6 * ) address ;
port = ntohs ( addr6 - > sin6_port ) ;
bep = ( __be16 * ) ( & addr6 - > sin6_addr ) ;
be32p = ( __be32 * ) ( & addr6 - > sin6_addr ) ;
port = ntohs ( address - > sin6_port ) ;
bep = ( __be16 * ) ( & address - > sin6_addr ) ;
be32p = ( __be32 * ) ( & address - > sin6_addr ) ;
/*
* It ' s remote , so port lookup does no good .
@ -2060,9 +2058,9 @@ auditout:
ad . a . u . net - > family = sk - > sk_family ;
ad . a . u . net - > dport = port ;
if ( act = = SMK_RECEIVING )
ad . a . u . net - > v6info . saddr = addr6 - > sin6_addr ;
ad . a . u . net - > v6info . saddr = address - > sin6_addr ;
else
ad . a . u . net - > v6info . daddr = addr6 - > sin6_addr ;
ad . a . u . net - > v6info . daddr = address - > sin6_addr ;
# endif
return smk_access ( skp , object , MAY_WRITE , & ad ) ;
}
@ -2201,7 +2199,8 @@ static int smack_socket_connect(struct socket *sock, struct sockaddr *sap,
case PF_INET6 :
if ( addrlen < sizeof ( struct sockaddr_in6 ) )
return - EINVAL ;
rc = smk_ipv6_port_check ( sock - > sk , sap , SMK_CONNECTING ) ;
rc = smk_ipv6_port_check ( sock - > sk , ( struct sockaddr_in6 * ) sap ,
SMK_CONNECTING ) ;
break ;
}
return rc ;
@ -3034,7 +3033,7 @@ static int smack_socket_sendmsg(struct socket *sock, struct msghdr *msg,
int size )
{
struct sockaddr_in * sip = ( struct sockaddr_in * ) msg - > msg_name ;
struct sockaddr * sap = ( struct sockaddr * ) msg - > msg_name ;
struct sockaddr_in6 * sap = ( struct sockaddr_in6 * ) msg - > msg_name ;
int rc = 0 ;
/*
@ -3121,9 +3120,8 @@ static struct smack_known *smack_from_secattr(struct netlbl_lsm_secattr *sap,
return smack_net_ambient ;
}
static int smk_skb_to_addr_ipv6 ( struct sk_buff * skb , struct sockaddr * sa p )
static int smk_skb_to_addr_ipv6 ( struct sk_buff * skb , struct sockaddr_in6 * si p )
{
struct sockaddr_in6 * sip = ( struct sockaddr_in6 * ) sap ;
u8 nexthdr ;
int offset ;
int proto = - EINVAL ;
@ -3181,7 +3179,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
struct netlbl_lsm_secattr secattr ;
struct socket_smack * ssp = sk - > sk_security ;
struct smack_known * skp ;
struct sockaddr sadd ;
struct sockaddr_in6 sadd ;
int rc = 0 ;
struct smk_audit_info ad ;
# ifdef CONFIG_AUDIT