diff options
author | rpaulo <rpaulo@FreeBSD.org> | 2009-03-20 13:27:51 +0000 |
---|---|---|
committer | rpaulo <rpaulo@FreeBSD.org> | 2009-03-20 13:27:51 +0000 |
commit | 04b1d6babecbe3eed463c150b6e933a2b6d342a9 (patch) | |
tree | 36afae3dff76dde8d1cee5971ff7f1bc4922ad0f /contrib/tcpdump/print-zephyr.c | |
parent | 3b74598d7ea581deadb14ec8ba1c77c14295a7c8 (diff) | |
download | FreeBSD-src-04b1d6babecbe3eed463c150b6e933a2b6d342a9.zip FreeBSD-src-04b1d6babecbe3eed463c150b6e933a2b6d342a9.tar.gz |
Flatten vendor/tcpdump and remove keyword expansion.
Diffstat (limited to 'contrib/tcpdump/print-zephyr.c')
-rw-r--r-- | contrib/tcpdump/print-zephyr.c | 313 |
1 files changed, 0 insertions, 313 deletions
diff --git a/contrib/tcpdump/print-zephyr.c b/contrib/tcpdump/print-zephyr.c deleted file mode 100644 index 698faa2..0000000 --- a/contrib/tcpdump/print-zephyr.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Decode and print Zephyr packets. - * - * http://web.mit.edu/zephyr/doc/protocol - * - * Copyright (c) 2001 Nickolai Zeldovich <kolya@MIT.EDU> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code - * distributions retain the above copyright notice and this paragraph - * in its entirety, and (2) distributions including binary code include - * the above copyright notice and this paragraph in its entirety in - * the documentation or other materials provided with the distribution. - * The name of the author(s) may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. - */ - -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-zephyr.c,v 1.8.2.1 2005/04/21 06:51:24 guy Exp $"; -#endif - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <tcpdump-stdinc.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#include "interface.h" - -struct z_packet { - char *version; - int numfields; - int kind; - char *uid; - int port; - int auth; - int authlen; - char *authdata; - char *class; - char *inst; - char *opcode; - char *sender; - const char *recipient; - char *format; - int cksum; - int multi; - char *multi_uid; - /* Other fields follow here.. */ -}; - -enum z_packet_type { - Z_PACKET_UNSAFE = 0, - Z_PACKET_UNACKED, - Z_PACKET_ACKED, - Z_PACKET_HMACK, - Z_PACKET_HMCTL, - Z_PACKET_SERVACK, - Z_PACKET_SERVNAK, - Z_PACKET_CLIENTACK, - Z_PACKET_STAT -}; - -static struct tok z_types[] = { - { Z_PACKET_UNSAFE, "unsafe" }, - { Z_PACKET_UNACKED, "unacked" }, - { Z_PACKET_ACKED, "acked" }, - { Z_PACKET_HMACK, "hm-ack" }, - { Z_PACKET_HMCTL, "hm-ctl" }, - { Z_PACKET_SERVACK, "serv-ack" }, - { Z_PACKET_SERVNAK, "serv-nak" }, - { Z_PACKET_CLIENTACK, "client-ack" }, - { Z_PACKET_STAT, "stat" } -}; - -char z_buf[256]; - -static char * -parse_field(char **pptr, int *len) -{ - char *s; - - if (*len <= 0 || !pptr || !*pptr) - return NULL; - if (*pptr > (char *) snapend) - return NULL; - - s = *pptr; - while (*pptr <= (char *) snapend && *len >= 0 && **pptr) { - (*pptr)++; - (*len)--; - } - (*pptr)++; - (*len)--; - if (*len < 0 || *pptr > (char *) snapend) - return NULL; - return s; -} - -static const char * -z_triple(char *class, char *inst, const char *recipient) -{ - if (!*recipient) - recipient = "*"; - snprintf(z_buf, sizeof(z_buf), "<%s,%s,%s>", class, inst, recipient); - z_buf[sizeof(z_buf)-1] = '\0'; - return z_buf; -} - -static const char * -str_to_lower(char *string) -{ - strncpy(z_buf, string, sizeof(z_buf)); - z_buf[sizeof(z_buf)-1] = '\0'; - - string = z_buf; - while (*string) { - *string = tolower((unsigned char)(*string)); - string++; - } - - return z_buf; -} - -void -zephyr_print(const u_char *cp, int length) -{ - struct z_packet z; - char *parse = (char *) cp; - int parselen = length; - char *s; - int lose = 0; - -#define PARSE_STRING \ - s = parse_field(&parse, &parselen); \ - if (!s) lose = 1; - -#define PARSE_FIELD_INT(field) \ - PARSE_STRING \ - if (!lose) field = strtol(s, 0, 16); - -#define PARSE_FIELD_STR(field) \ - PARSE_STRING \ - if (!lose) field = s; - - PARSE_FIELD_STR(z.version); - if (lose) return; - if (strncmp(z.version, "ZEPH", 4)) - return; - - PARSE_FIELD_INT(z.numfields); - PARSE_FIELD_INT(z.kind); - PARSE_FIELD_STR(z.uid); - PARSE_FIELD_INT(z.port); - PARSE_FIELD_INT(z.auth); - PARSE_FIELD_INT(z.authlen); - PARSE_FIELD_STR(z.authdata); - PARSE_FIELD_STR(z.class); - PARSE_FIELD_STR(z.inst); - PARSE_FIELD_STR(z.opcode); - PARSE_FIELD_STR(z.sender); - PARSE_FIELD_STR(z.recipient); - PARSE_FIELD_STR(z.format); - PARSE_FIELD_INT(z.cksum); - PARSE_FIELD_INT(z.multi); - PARSE_FIELD_STR(z.multi_uid); - - if (lose) { - printf(" [|zephyr] (%d)", length); - return; - } - - printf(" zephyr"); - if (strncmp(z.version+4, "0.2", 3)) { - printf(" v%s", z.version+4); - return; - } - - printf(" %s", tok2str(z_types, "type %d", z.kind)); - if (z.kind == Z_PACKET_SERVACK) { - /* Initialization to silence warnings */ - char *ackdata = NULL; - PARSE_FIELD_STR(ackdata); - if (!lose && strcmp(ackdata, "SENT")) - printf("/%s", str_to_lower(ackdata)); - } - if (*z.sender) printf(" %s", z.sender); - - if (!strcmp(z.class, "USER_LOCATE")) { - if (!strcmp(z.opcode, "USER_HIDE")) - printf(" hide"); - else if (!strcmp(z.opcode, "USER_UNHIDE")) - printf(" unhide"); - else - printf(" locate %s", z.inst); - return; - } - - if (!strcmp(z.class, "ZEPHYR_ADMIN")) { - printf(" zephyr-admin %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "ZEPHYR_CTL")) { - if (!strcmp(z.inst, "CLIENT")) { - if (!strcmp(z.opcode, "SUBSCRIBE") || - !strcmp(z.opcode, "SUBSCRIBE_NODEFS") || - !strcmp(z.opcode, "UNSUBSCRIBE")) { - - printf(" %ssub%s", strcmp(z.opcode, "SUBSCRIBE") ? "un" : "", - strcmp(z.opcode, "SUBSCRIBE_NODEFS") ? "" : - "-nodefs"); - if (z.kind != Z_PACKET_SERVACK) { - /* Initialization to silence warnings */ - char *c = NULL, *i = NULL, *r = NULL; - PARSE_FIELD_STR(c); - PARSE_FIELD_STR(i); - PARSE_FIELD_STR(r); - if (!lose) printf(" %s", z_triple(c, i, r)); - } - return; - } - - if (!strcmp(z.opcode, "GIMME")) { - printf(" ret"); - return; - } - - if (!strcmp(z.opcode, "GIMMEDEFS")) { - printf(" gimme-defs"); - return; - } - - if (!strcmp(z.opcode, "CLEARSUB")) { - printf(" clear-subs"); - return; - } - - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.inst, "HM")) { - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.inst, "REALM")) { - if (!strcmp(z.opcode, "ADD_SUBSCRIBE")) - printf(" realm add-subs"); - if (!strcmp(z.opcode, "REQ_SUBSCRIBE")) - printf(" realm req-subs"); - if (!strcmp(z.opcode, "RLM_SUBSCRIBE")) - printf(" realm rlm-sub"); - if (!strcmp(z.opcode, "RLM_UNSUBSCRIBE")) - printf(" realm rlm-unsub"); - return; - } - } - - if (!strcmp(z.class, "HM_CTL")) { - printf(" hm_ctl %s", str_to_lower(z.inst)); - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "HM_STAT")) { - if (!strcmp(z.inst, "HMST_CLIENT") && !strcmp(z.opcode, "GIMMESTATS")) { - printf(" get-client-stats"); - return; - } - } - - if (!strcmp(z.class, "WG_CTL")) { - printf(" wg_ctl %s", str_to_lower(z.inst)); - printf(" %s", str_to_lower(z.opcode)); - return; - } - - if (!strcmp(z.class, "LOGIN")) { - if (!strcmp(z.opcode, "USER_FLUSH")) { - printf(" flush_locs"); - return; - } - - if (!strcmp(z.opcode, "NONE") || - !strcmp(z.opcode, "OPSTAFF") || - !strcmp(z.opcode, "REALM-VISIBLE") || - !strcmp(z.opcode, "REALM-ANNOUNCED") || - !strcmp(z.opcode, "NET-VISIBLE") || - !strcmp(z.opcode, "NET-ANNOUNCED")) { - printf(" set-exposure %s", str_to_lower(z.opcode)); - return; - } - } - - if (!*z.recipient) - z.recipient = "*"; - - printf(" to %s", z_triple(z.class, z.inst, z.recipient)); - if (*z.opcode) - printf(" op %s", z.opcode); - return; -} |