1*3941Svenki /* 2*3941Svenki * CDDL HEADER START 3*3941Svenki * 4*3941Svenki * The contents of this file are subject to the terms of the 5*3941Svenki * Common Development and Distribution License (the "License"). 6*3941Svenki * You may not use this file except in compliance with the License. 7*3941Svenki * 8*3941Svenki * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*3941Svenki * or http://www.opensolaris.org/os/licensing. 10*3941Svenki * See the License for the specific language governing permissions 11*3941Svenki * and limitations under the License. 12*3941Svenki * 13*3941Svenki * When distributing Covered Code, include this CDDL HEADER in each 14*3941Svenki * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*3941Svenki * If applicable, add the following below this CDDL HEADER, with the 16*3941Svenki * fields enclosed by brackets "[]" replaced with your own identifying 17*3941Svenki * information: Portions Copyright [yyyy] [name of copyright owner] 18*3941Svenki * 19*3941Svenki * CDDL HEADER END 20*3941Svenki */ 21*3941Svenki 22*3941Svenki /* 23*3941Svenki * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24*3941Svenki * Use is subject to license terms. 25*3941Svenki */ 26*3941Svenki 27*3941Svenki #ifndef _DEBUG_H 28*3941Svenki #define _DEBUG_H 29*3941Svenki 30*3941Svenki #pragma ident "%Z%%M% %I% %E% SMI" 31*3941Svenki 32*3941Svenki #ifdef __cplusplus 33*3941Svenki extern "C" { 34*3941Svenki #endif 35*3941Svenki 36*3941Svenki #ifdef SNMP_DEBUG 37*3941Svenki 38*3941Svenki /* 39*3941Svenki * ASN Debugging keys 40*3941Svenki */ 41*3941Svenki #define SNMP_DASN_SEQUENCE 1 42*3941Svenki #define SNMP_DASN_LENGTH 2 43*3941Svenki #define SNMP_DASN_INT 3 44*3941Svenki #define SNMP_DASN_OCTET_STR 4 45*3941Svenki #define SNMP_DASN_OID 5 46*3941Svenki #define SNMP_DASN_NULL 6 47*3941Svenki 48*3941Svenki /* 49*3941Svenki * Debug tags 50*3941Svenki */ 51*3941Svenki #define TAG_CMD_REQUEST 0 52*3941Svenki #define TAG_NULL_VAR 1 53*3941Svenki #define TAG_RESPONSE_VAR 2 54*3941Svenki #define TAG_REQUEST_PDU 3 55*3941Svenki #define TAG_RESPONSE_PDU 4 56*3941Svenki #define TAG_REQUEST_PKT 5 57*3941Svenki #define TAG_RESPONSE_PKT 6 58*3941Svenki #define TAG_WRITE 7 59*3941Svenki #define TAG_IOCTL 8 60*3941Svenki #define TAG_READ 9 61*3941Svenki #define TAG_SENDTO 10 62*3941Svenki #define TAG_RECVFROM 11 63*3941Svenki 64*3941Svenki /* 65*3941Svenki * Debug macros 66*3941Svenki */ 67*3941Svenki #define LOGINIT() \ 68*3941Svenki snmp_debug_init() 69*3941Svenki 70*3941Svenki #define LOGGET(tag, prefix, row) \ 71*3941Svenki snmp_log_cmd(tag, SNMP_MSG_GET, 1, prefix, row) 72*3941Svenki 73*3941Svenki #define LOGBULK(tag, n_oids, oidstrs, row) \ 74*3941Svenki snmp_log_cmd(tag, SNMP_MSG_GETBULK, n_oids, oidstrs, row) 75*3941Svenki 76*3941Svenki #define LOGNEXT(tag, prefix, row) \ 77*3941Svenki snmp_log_cmd(tag, SNMP_MSG_GETNEXT, 1, prefix, row) 78*3941Svenki 79*3941Svenki #define LOGVAR(tag, vp) \ 80*3941Svenki snmp_log_var(tag, vp) 81*3941Svenki 82*3941Svenki #define LOGPDU(tag, pdu) \ 83*3941Svenki snmp_log_pdu(tag, pdu) 84*3941Svenki 85*3941Svenki #define LOGASNSEQ(pkt, pktsz) \ 86*3941Svenki snmp_log_asn(SNMP_DASN_SEQUENCE, pkt, pktsz) 87*3941Svenki 88*3941Svenki #define LOGASNLENGTH(pkt, pktsz) \ 89*3941Svenki snmp_log_asn(SNMP_DASN_LENGTH, pkt, pktsz) 90*3941Svenki 91*3941Svenki #define LOGASNINT(pkt, pktsz) \ 92*3941Svenki snmp_log_asn(SNMP_DASN_INT, pkt, pktsz) 93*3941Svenki 94*3941Svenki #define LOGASNOCTSTR(pkt, pktsz) \ 95*3941Svenki snmp_log_asn(SNMP_DASN_OCTET_STR, pkt, pktsz) 96*3941Svenki 97*3941Svenki #define LOGASNOID(pkt, pktsz) \ 98*3941Svenki snmp_log_asn(SNMP_DASN_OID, pkt, pktsz) 99*3941Svenki 100*3941Svenki #define LOGASNNULL(pkt, pktsz) \ 101*3941Svenki snmp_log_asn(SNMP_DASN_NULL, pkt, pktsz) 102*3941Svenki 103*3941Svenki #define LOGPKT(tag, pkt, sz) \ 104*3941Svenki snmp_log_pkt(tag, pkt, sz) 105*3941Svenki 106*3941Svenki #define LOGIO(tag, a1, a2, a3) \ 107*3941Svenki snmp_log_io(tag, (int)a1, (uint_t)a2, (uint_t)a3) 108*3941Svenki 109*3941Svenki /* 110*3941Svenki * Exported debug interfaces 111*3941Svenki */ 112*3941Svenki extern void snmp_debug_init(void); 113*3941Svenki extern void snmp_log_cmd(uint_t tag, int cmd, int n_oids, 114*3941Svenki char *oidstr, int row); 115*3941Svenki extern void snmp_log_var(uint_t tag, pdu_varlist_t *vp); 116*3941Svenki extern void snmp_log_pdu(uint_t tag, snmp_pdu_t *pdu); 117*3941Svenki extern void snmp_log_asn(int key, uchar_t *pkt, size_t pktsz); 118*3941Svenki extern void snmp_log_pkt(uint_t tag, uchar_t *pkt, size_t pktsz); 119*3941Svenki extern void snmp_log_io(uint_t tag, int a1, uint_t a2, uint_t a3); 120*3941Svenki 121*3941Svenki #else /* SNMP_DEBUG */ 122*3941Svenki 123*3941Svenki #define LOGINIT() 124*3941Svenki #define LOGGET(tag, prefix, row) 125*3941Svenki #define LOGBULK(tag, n_oids, oidstrs, row) 126*3941Svenki #define LOGNEXT(tag, prefix, row) 127*3941Svenki #define LOGVAR(tag, vp) 128*3941Svenki #define LOGPDU(tag, pdu) 129*3941Svenki #define LOGASNSEQ(pkt, pktsz) 130*3941Svenki #define LOGASNLENGTH(pkt, pktsz) 131*3941Svenki #define LOGASNINT(pkt, pktsz) 132*3941Svenki #define LOGASNOCTSTR(pkt, pktsz) 133*3941Svenki #define LOGASNOID(pkt, pktsz) 134*3941Svenki #define LOGASNNULL(pkt, pktsz) 135*3941Svenki #define LOGPKT(tag, pkt, sz) 136*3941Svenki #define LOGIO(tag, a1, a2, a3) 137*3941Svenki 138*3941Svenki #endif /* SNMP_DEBUG */ 139*3941Svenki 140*3941Svenki #ifdef __cplusplus 141*3941Svenki } 142*3941Svenki #endif 143*3941Svenki 144*3941Svenki #endif /* _DEBUG_H */ 145