Date: Wed, 30 Jul 2008 01:10:44 GMT From: Diego Giagio <diego@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 146237 for review Message-ID: <200807300110.m6U1AiYi045856@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=146237 Change 146237 by diego@diego_black on 2008/07/30 01:09:46 Use port from struct sockaddr_* instead of passing it by value. Simplify API. Affected files ... .. //depot/projects/soc2008/diego-audit/src/sys/bsm/audit_record.h#3 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit.h#13 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_arg.c#4 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_bsm.c#5 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_bsm_token.c#3 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_pfil.c#10 edit .. //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_private.h#4 edit Differences ... ==== //depot/projects/soc2008/diego-audit/src/sys/bsm/audit_record.h#3 (text) ==== @@ -296,10 +296,10 @@ #if defined(_KERNEL) || defined(KERNEL) token_t *au_to_socket(struct socket *so); -token_t *au_to_socket_ex_32(uint16_t domain, uint16_t type, uint16_t lp, - uint16_t rp, struct sockaddr *la, struct sockaddr *ta); -token_t *au_to_socket_ex_128(uint16_t domain, uint16_t type, uint16_t lp, - uint16_t rp, struct sockaddr *la, struct sockaddr *ta); +token_t *au_to_socket_ex_32(uint16_t domain, uint16_t type, + struct sockaddr *la, struct sockaddr *ta); +token_t *au_to_socket_ex_128(uint16_t domain, uint16_t type, + struct sockaddr *la, struct sockaddr *ta); #endif token_t *au_to_sock_inet(struct sockaddr_in *so); ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit.h#13 (text) ==== @@ -183,8 +183,8 @@ void audit_arg_process(struct proc *p); void audit_arg_signum(u_int signum); void audit_arg_socket(int sodomain, int sotype, int soprotocol); -void audit_arg_socket_ex(int sodomain, int sotype, int lport, int rport, - struct sockaddr *la, struct sockaddr *ra); +void audit_arg_socket_ex(int sodomain, int sotype, struct sockaddr *la, + struct sockaddr *ra); void audit_arg_sockaddr(struct thread *td, struct sockaddr *sa); void audit_arg_auid(uid_t auid); void audit_arg_auditinfo(struct auditinfo *au_info); ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_arg.c#4 (text) ==== @@ -609,7 +609,7 @@ void audit_record_arg_socket_ex(struct kaudit_record *ar, int sodomain, int sotype, - int lport, int rport, struct sockaddr *la, struct sockaddr *ra) + struct sockaddr *la, struct sockaddr *ra) { KASSERT(ar != NULL, ("audit_record_arg_socket_ex: ar == NULL")); KASSERT(la != NULL, ("audit_record_arg_socket_ex: la == NULL")); @@ -617,16 +617,14 @@ ar->k_ar.ar_arg_sockconn.sc_domain = sodomain; ar->k_ar.ar_arg_sockconn.sc_type = sotype; - ar->k_ar.ar_arg_sockconn.sc_lport = lport; - ar->k_ar.ar_arg_sockconn.sc_rport = rport; bcopy(la, &ar->k_ar.ar_arg_sockconn.sc_laddr, la->sa_len); bcopy(ra, &ar->k_ar.ar_arg_sockconn.sc_raddr, ra->sa_len); ARG_SET_VALID(ar, ARG_SOCKCONN); } void -audit_arg_socket_ex(int sodomain, int sotype, int lport, int rport, - struct sockaddr *la, struct sockaddr *ra) +audit_arg_socket_ex(int sodomain, int sotype, struct sockaddr *la, + struct sockaddr *ra) { struct kaudit_record *ar; @@ -634,7 +632,7 @@ if (ar == NULL) return; - audit_record_arg_socket_ex(ar, sodomain, sotype, lport, rport, la, ra); + audit_record_arg_socket_ex(ar, sodomain, sotype, la, ra); } void ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_bsm.c#5 (text) ==== @@ -1444,15 +1444,11 @@ tok = au_to_socket_ex_32( ar->ar_arg_sockconn.sc_domain, ar->ar_arg_sockconn.sc_type, - ar->ar_arg_sockconn.sc_lport, - ar->ar_arg_sockconn.sc_rport, laddr, raddr); } else { tok = au_to_socket_ex_128( ar->ar_arg_sockconn.sc_domain, ar->ar_arg_sockconn.sc_type, - ar->ar_arg_sockconn.sc_lport, - ar->ar_arg_sockconn.sc_rport, laddr, raddr); } kau_write(rec, tok); ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_bsm_token.c#3 (text) ==== @@ -855,11 +855,13 @@ * remote address 4 bytes/16 bytes (IPv4/IPv6 address) */ token_t * -au_to_socket_ex_32(u_int16_t domain, u_int16_t type, u_int16_t lp, u_int16_t rp, - struct sockaddr *la, struct sockaddr *ra) +au_to_socket_ex_32(u_int16_t domain, u_int16_t type, struct sockaddr *la, + struct sockaddr *ra) { token_t *t; u_char *dptr = NULL; + struct sockaddr_in *lai = (struct sockaddr_in*)la; + struct sockaddr_in *rai = (struct sockaddr_in*)ra; GET_TOKEN_AREA(t, dptr, sizeof(u_char) + sizeof(u_int16_t) + sizeof(u_int16_t) + sizeof(u_int16_t) + sizeof(u_int16_t) + @@ -869,20 +871,22 @@ ADD_U_INT16(dptr, domain); ADD_U_INT16(dptr, type); ADD_U_INT16(dptr, AU_IPv4); - ADD_U_INT16(dptr, lp); - ADD_MEM(dptr, &la->sa_data, AU_IPv4); - ADD_U_INT16(dptr, rp); - ADD_MEM(dptr, &ra->sa_data, AU_IPv4); + ADD_U_INT16(dptr, lai->sin_port); + ADD_U_INT32(dptr, lai->sin_addr.s_addr); + ADD_U_INT16(dptr, rai->sin_port); + ADD_U_INT32(dptr, rai->sin_addr.s_addr); return (t); } token_t * -au_to_socket_ex_128(u_int16_t domain, u_int16_t type, u_int16_t lp, - u_int16_t rp, struct sockaddr *la, struct sockaddr *ra) +au_to_socket_ex_128(u_int16_t domain, u_int16_t type, struct sockaddr *la, + struct sockaddr *ra) { token_t *t; u_char *dptr = NULL; + struct sockaddr_in6 *lai = (struct sockaddr_in6*)la; + struct sockaddr_in6 *rai = (struct sockaddr_in6*)ra; GET_TOKEN_AREA(t, dptr, sizeof(u_char) + sizeof(u_int16_t) + sizeof(u_int16_t) + sizeof(u_int16_t) + sizeof(u_int16_t) + @@ -892,10 +896,10 @@ ADD_U_INT16(dptr, domain); ADD_U_INT16(dptr, type); ADD_U_INT16(dptr, AU_IPv6); - ADD_U_INT16(dptr, lp); - ADD_MEM(dptr, &la->sa_data, AU_IPv6); - ADD_U_INT16(dptr, rp); - ADD_MEM(dptr, &ra->sa_data, AU_IPv6); + ADD_U_INT16(dptr, lai->sin6_port); + ADD_MEM(dptr, &lai->sin6_addr, 4 * sizeof(u_int32_t)); + ADD_U_INT16(dptr, rai->sin6_port); + ADD_MEM(dptr, &rai->sin6_addr, 4 * sizeof(u_int32_t)); return (t); } ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_pfil.c#10 (text+ko) ==== @@ -322,11 +322,11 @@ } static void -addr_to_sin(u_int32_t addr, struct sockaddr_in *sin) +addr_port_to_sin(u_int32_t addr, u_int16_t port, struct sockaddr_in *sin) { sin->sin_len = sizeof(struct sockaddr_in); sin->sin_family = PF_INET; - sin->sin_port = 0; + sin->sin_port = port; sin->sin_addr.s_addr = addr; } @@ -347,11 +347,11 @@ * * TODO: check MATCH_FORWARD / MATCH_REVERSE on ip_fw2.c */ - addr_to_sin(src, &lsin); - addr_to_sin(dst, &rsin); + addr_port_to_sin(src, src_port, &lsin); + addr_port_to_sin(dst, dst_port, &rsin); audit_record_arg_text(ar, "ipfw"); - audit_record_arg_socket_ex(ar, PF_INET, SOCK_STREAM, src_port, dst_port, + audit_record_arg_socket_ex(ar, PF_INET, SOCK_STREAM, (struct sockaddr*)&lsin, (struct sockaddr*)&rsin); audit_commit(ar, error, 0); } ==== //depot/projects/soc2008/diego-audit/src/sys/security/audit/audit_private.h#4 (text) ==== @@ -121,8 +121,6 @@ struct sockconn_au_info { int sc_domain; int sc_type; - u_short sc_lport; - u_short sc_rport; struct sockaddr_storage sc_laddr; struct sockaddr_storage sc_raddr; }; @@ -288,7 +286,7 @@ void audit_record_arg_socket(struct kaudit_record *ar, int sodomain, int sotype, int soprotocol); void audit_record_arg_socket_ex(struct kaudit_record *ar, int sodomain, - int sotype, int lport, int rport, struct sockaddr *la, struct sockaddr *ra); + int sotype, struct sockaddr *la, struct sockaddr *ra); void audit_record_arg_sockaddr(struct kaudit_record *ar, struct thread *td, struct sockaddr *sa); void audit_record_arg_auid(struct kaudit_record *ar, uid_t auid);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807300110.m6U1AiYi045856>