From owner-p4-projects@FreeBSD.ORG Sat Mar 14 22:21:39 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 54B671065674; Sat, 14 Mar 2009 22:21:38 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 15E611065670; Sat, 14 Mar 2009 22:21:38 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id D00ED8FC16; Sat, 14 Mar 2009 22:21:37 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id 7175946B2A; Sat, 14 Mar 2009 18:21:37 -0400 (EDT) Date: Sat, 14 Mar 2009 22:21:37 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Stacey Son In-Reply-To: <200903130019.n2D0JSQA093900@repoman.freebsd.org> Message-ID: References: <200903130019.n2D0JSQA093900@repoman.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Perforce Change Reviews Subject: Re: PERFORCE change 159140 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Mar 2009 22:21:39 -0000 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 > @@ -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, " + fprintf(fp, " break; > > case AUT_SOCKUNIX: > - fprintf(fp, " + fprintf(fp, " break; > > + case AUT_SOCKINET128: > + fprintf(fp, " + > case AUT_SUBJECT32: > fprintf(fp, " 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; >