Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Mar 2009 22:21:37 +0000 (GMT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Stacey Son <sson@FreeBSD.org>
Cc:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   Re: PERFORCE change 159140 for review
Message-ID:  <alpine.BSF.2.00.0903142220230.92013@fledge.watson.org>
In-Reply-To: <200903130019.n2D0JSQA093900@repoman.freebsd.org>
References:  <200903130019.n2D0JSQA093900@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Fri, 13 Mar 2009, Stacey Son wrote:

> http://perforce.freebsd.org/chv.cgi?CH=159140
>
> Change 159140 by sson@sson_amd64 on 2009/03/13 00:18:47
>
> 	Add support for parsing and printing AUT_SOCKINET128 tokens.

Have you confirmed that this doesn't grow the size of struct tokenstr, which 
is (unfortunately) part of the ABI for libbsm?

Robert N M Watson
Computer Laboratory
University of Cambridge

>
> Affected files ...
>
> .. //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 edit
> .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 edit
>
> Differences ...
>
> ==== //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 (text+ko) ====
>
> @@ -26,7 +26,7 @@
>  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
>  * POSSIBILITY OF SUCH DAMAGE.
>  *
> - * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#44 $
> + * $P4: //depot/projects/trustedbsd/openbsm/bsm/libbsm.h#45 $
>  */
>
> #ifndef _LIBBSM_H_
> @@ -565,6 +565,12 @@
> typedef struct {
> 	u_int16_t	family;
> 	u_int16_t	port;
> +	u_int32_t	addr[4];
> +} au_socketinet_ex32_t;
> +
> +typedef struct {
> +	u_int16_t	family;
> +	u_int16_t	port;
> 	u_int32_t	addr;
> } au_socketinet32_t;
>
> @@ -722,7 +728,7 @@
> 		au_seq_t		seq;
> 		au_socket_t		socket;
> 		au_socket_ex32_t	socket_ex32;
> -		au_socketinet32_t	sockinet32;
> +		au_socketinet_ex32_t	sockinet_ex32;
> 		au_socketunix_t		sockunix;
> 		au_subject32_t		subj32;
> 		au_subject32ex_t	subj32_ex;
>
> ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 (text+ko) ====
>
> @@ -32,7 +32,7 @@
>  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
>  * POSSIBILITY OF SUCH DAMAGE.
>  *
> - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#61 $
> + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_io.c#62 $
>  */
>
> #include <sys/types.h>
> @@ -365,6 +365,10 @@
> 		fprintf(fp, "/>");
> 		break;
>
> +	case AUT_SOCKINET128:
> +		fprintf(fp, "/>");
> +		break;
> +
> 	case AUT_SUBJECT32:
> 		fprintf(fp, "/>");
> 		break;
> @@ -529,13 +533,16 @@
> 			break;
>
> 		case AUT_SOCKINET32:
> -			fprintf(fp, "<old_socket");
> +			fprintf(fp, "<socket-inet ");
> 			break;
>
> 		case AUT_SOCKUNIX:
> -			fprintf(fp, "<old_socket");
> +			fprintf(fp, "<socket-unix ");
> 			break;
>
> +		case AUT_SOCKINET128:
> +			fprintf(fp, "<socket-inet6 ");
> +
> 		case AUT_SUBJECT32:
> 			fprintf(fp, "<subject ");
> 			break;
> @@ -3067,18 +3074,18 @@
> {
> 	int err = 0;
>
> -	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet32.family, tok->len,
> +	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet_ex32.family, tok->len,
> 	    err);
> 	if (err)
> 		return (-1);
>
> -	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet32.port,
> +	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.port,
> 	    sizeof(uint16_t), tok->len, err);
> 	if (err)
> 		return (-1);
>
> -	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet32.addr,
> -	    sizeof(tok->tt.sockinet32.addr), tok->len, err);
> +	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.addr,
> +	    sizeof(tok->tt.sockinet_ex32.addr[0]), tok->len, err);
> 	if (err)
> 		return (-1);
>
> @@ -3093,22 +3100,77 @@
> 	print_tok_type(fp, tok->id, "socket-inet", raw, xml);
> 	if (xml) {
> 		open_attr(fp, "type");
> -		print_2_bytes(fp, tok->tt.sockinet32.family, "%u");
> +		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
> +		close_attr(fp);
> +		open_attr(fp, "port");
> +		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
> +		close_attr(fp);
> +		open_attr(fp, "addr");
> +		print_ip_address(fp, tok->tt.sockinet_ex32.addr[0]);
> +		close_attr(fp);
> +		close_tag(fp, tok->id);
> +	} else {
> +		print_delim(fp, del);
> +		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
> +		print_delim(fp, del);
> +		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
> +		print_delim(fp, del);
> +		print_ip_address(fp, tok->tt.sockinet_ex32.addr[0]);
> +	}
> +}
> +
> +/*
> + * socket family	 2 bytes
> + * local port		 2 bytes
> + * socket address	16 bytes
> + */
> +static int
> +fetch_sock_inet128_tok(tokenstr_t *tok, u_char *buf, int len)
> +{
> +	int err = 0;
> +
> +	READ_TOKEN_U_INT16(buf, len, tok->tt.sockinet_ex32.family, tok->len,
> +	    err);
> +	if (err)
> +		return (-1);
> +
> +	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.port,
> +	    sizeof(uint16_t), tok->len, err);
> +	if (err)
> +		return (-1);
> +
> +	READ_TOKEN_BYTES(buf, len, &tok->tt.sockinet_ex32.addr,
> +	    sizeof(tok->tt.sockinet_ex32.addr), tok->len, err);
> +	if (err)
> +		return (-1);
> +
> +	return (0);
> +}
> +
> +static void
> +print_sock_inet128_tok(FILE *fp, tokenstr_t *tok, char *del, char raw,
> +    __unused char sfrm, int xml)
> +{
> +
> +	print_tok_type(fp, tok->id, "socket-inet6", raw, xml);
> +	if (xml) {
> +		open_attr(fp, "type");
> +		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
> 		close_attr(fp);
> 		open_attr(fp, "port");
> -		print_2_bytes(fp, ntohs(tok->tt.sockinet32.port), "%u");
> +		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
> 		close_attr(fp);
> 		open_attr(fp, "addr");
> -		print_ip_address(fp, tok->tt.sockinet32.addr);
> +		print_ip_ex_address(fp, AU_IPv6, tok->tt.sockinet_ex32.addr);
> 		close_attr(fp);
> 		close_tag(fp, tok->id);
> 	} else {
> 		print_delim(fp, del);
> -		print_2_bytes(fp, tok->tt.sockinet32.family, "%u");
> +		print_2_bytes(fp, tok->tt.sockinet_ex32.family, "%u");
> 		print_delim(fp, del);
> -		print_2_bytes(fp, ntohs(tok->tt.sockinet32.port), "%u");
> +		print_2_bytes(fp, ntohs(tok->tt.sockinet_ex32.port), "%u");
> 		print_delim(fp, del);
> -		print_ip_address(fp, tok->tt.sockinet32.addr);
> +		print_ip_ex_address(fp, AU_IPv6, tok->tt.sockinet_ex32.addr);
> 	}
> }
>
> @@ -4057,6 +4119,9 @@
> 	case AUT_SOCKUNIX:
> 		return (fetch_sock_unix_tok(tok, buf, len));
>
> +	case AUT_SOCKINET128:
> +		return (fetch_sock_inet128_tok(tok, buf, len));
> +
> 	case AUT_SUBJECT32:
> 		return (fetch_subject32_tok(tok, buf, len));
>
> @@ -4226,6 +4291,10 @@
> 		print_sock_unix_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
> 		return;
>
> +	case AUT_SOCKINET128:
> +		print_sock_inet128_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
> +		return;
> +
> 	case AUT_SUBJECT32:
> 		print_subject32_tok(outfp, tok, del, raw, sfrm, AU_PLAIN);
> 		return;
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0903142220230.92013>