1 /* 2 * ProFTPD - mod_snmp packet routines 3 * Copyright (c) 2008-2016 TJ Saunders 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. 18 * 19 * As a special exemption, TJ Saunders and other respective copyright holders 20 * give permission to link this program with OpenSSL, and distribute the 21 * resulting executable, without including the source code for OpenSSL in the 22 * source distribution. 23 */ 24 25 #ifndef MOD_SNMP_PACKET_H 26 #define MOD_SNMP_PACKET_H 27 28 #include "mod_snmp.h" 29 #include "pdu.h" 30 31 /* SNMP packets shouldn't be larger than 4K, right? */ 32 #define SNMP_PACKET_MAX_LEN 4096 33 34 struct snmp_packet { 35 pool *pool; 36 37 const pr_netaddr_t *remote_addr; 38 const pr_class_t *remote_class; 39 40 /* Request packet data */ 41 unsigned char *req_data; 42 size_t req_datalen; 43 44 /* SNMP protocol version */ 45 long snmp_version; 46 47 /* Community string for outgoing packets */ 48 char *community; 49 unsigned int community_len; 50 51 struct snmp_pdu *req_pdu; 52 53 /* Response packet data */ 54 unsigned char *resp_data; 55 size_t resp_datalen; 56 57 struct snmp_pdu *resp_pdu; 58 }; 59 60 struct snmp_packet *snmp_packet_create(pool *p); 61 int snmp_packet_write(pool *p, int sockfd, struct snmp_packet *pkt); 62 63 #endif /* MOD_SNMP_PACKET_H */ 64