1 /* 2 * Amanda, The Advanced Maryland Automatic Network Disk Archiver 3 * Copyright (c) 1991-1999 University of Maryland at College Park 4 * Copyright (c) 2007-2013 Zmanda, Inc. All Rights Reserved. 5 * All Rights Reserved. 6 * 7 * Permission to use, copy, modify, distribute, and sell this software and its 8 * documentation for any purpose is hereby granted without fee, provided that 9 * the above copyright notice appear in all copies and that both that 10 * copyright notice and this permission notice appear in supporting 11 * documentation, and that the name of U.M. not be used in advertising or 12 * publicity pertaining to distribution of the software without specific, 13 * written prior permission. U.M. makes no representations about the 14 * suitability of this software for any purpose. It is provided "as is" 15 * without express or implied warranty. 16 * 17 * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. 19 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 20 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 21 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 22 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 23 * 24 * Authors: the Amanda Development Team. Its members are listed in a 25 * file named AUTHORS, in the root directory of this distribution. 26 */ 27 /* 28 * $Id: packet.h,v 1.8 2006/05/25 01:47:12 johnfranks Exp $ 29 * 30 * interfaces for modifying amanda protocol packet type 31 */ 32 #ifndef PACKET_H 33 #define PACKET_H 34 35 typedef enum { P_REQ = 0, P_REP = 1, P_PREP = 2, P_ACK = 3, P_NAK = 4 } pktype_t; 36 typedef struct { 37 pktype_t type; /* type of packet */ 38 char * body; /* body of packet */ 39 size_t size; 40 size_t packet_size; 41 } pkt_t; 42 43 /* 44 * Initialize a packet 45 */ 46 void pkt_init_empty(pkt_t *pkt, pktype_t type); 47 void pkt_init(pkt_t *, pktype_t, const char *, ...) 48 G_GNUC_PRINTF(3,4); 49 50 /* 51 * Append data to a packet 52 */ 53 void pkt_cat(pkt_t *, const char *, ...) 54 G_GNUC_PRINTF(2,3); 55 56 /* 57 * Convert the packet type to and from a string 58 */ 59 const char *pkt_type2str(pktype_t); 60 pktype_t pkt_str2type(const char *); 61 62 #endif /* PACKET_H */ 63