PERFORCE change 159140 for review
Robert Watson
rwatson at FreeBSD.org
Sat Mar 14 15:21:39 PDT 2009
On Fri, 13 Mar 2009, Stacey Son wrote:
> http://perforce.freebsd.org/chv.cgi?CH=159140
>
> Change 159140 by sson at 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;
>
More information about the p4-projects
mailing list