From owner-p4-projects@FreeBSD.ORG Fri Mar 13 00:19:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A7329106567C; Fri, 13 Mar 2009 00:19:28 +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 499031065673 for ; Fri, 13 Mar 2009 00:19:28 +0000 (UTC) (envelope-from sson@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 370FD8FC08 for ; Fri, 13 Mar 2009 00:19:28 +0000 (UTC) (envelope-from sson@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n2D0JSmI093902 for ; Fri, 13 Mar 2009 00:19:28 GMT (envelope-from sson@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n2D0JSQA093900 for perforce@freebsd.org; Fri, 13 Mar 2009 00:19:28 GMT (envelope-from sson@FreeBSD.org) Date: Fri, 13 Mar 2009 00:19:28 GMT Message-Id: <200903130019.n2D0JSQA093900@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sson@FreeBSD.org using -f From: Stacey Son To: Perforce Change Reviews Cc: Subject: 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: Fri, 13 Mar 2009 00:19:30 -0000 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. 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, "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;