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>