Reduce use of stderr in many places

serval_packetvisualise() is now replaced by DEBUG_packet_visualise() which uses
logging system not stderr (so now it will appear in Android log).

Replaced several fprintf(stderr,...) with DEBUGF(...).

Command line only prints a full help message on "help" command -- a command
parse failure simply informs the user about the "help" command.
This commit is contained in:
Andrew Bettison 2012-08-01 17:54:02 +09:30
parent 560e0c6699
commit f37ec5af09
10 changed files with 127 additions and 113 deletions

View File

@ -38,16 +38,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "strbuf.h"
int cli_usage() {
fprintf(stderr,"\nServal Mesh version <version>.\n");
fprintf(stderr,"Usage:\n");
printf("Serval Mesh version <version>.\n");
printf("Usage:\n");
int i,j;
for(i=0;command_line_options[i].function;i++)
{
for(j=0;command_line_options[i].words[j];j++)
fprintf(stderr," %s",command_line_options[i].words[j]);
fprintf(stderr,"\n %s\n",command_line_options[i].description);
}
return -1;
for(i=0;command_line_options[i].function;i++) {
for(j=0;command_line_options[i].words[j];j++)
printf(" %s",command_line_options[i].words[j]);
printf("\n %s\n",command_line_options[i].description);
}
return 0;
}
/* Remember the name by which this program was invoked.
@ -183,24 +182,17 @@ JNIEXPORT jint JNICALL Java_org_servalproject_servald_ServalD_rawCommand(JNIEnv
#endif /* HAVE_JNI_H */
static void complainCommandLine(const char *prefix, int argc, const char *const *argv)
{
WHY_argv(prefix, argc, argv);
}
/* The argc and argv arguments must be passed verbatim from main(argc, argv), so argv[0] is path to
executable.
*/
int parseCommandLine(const char *argv0, int argc, const char *const *args)
{
int i;
int ambiguous=0;
int cli_call=-1;
fd_clearstats();
IN();
exec_argv0 = argv0;
int i;
for(i=0;command_line_options[i].function;i++)
{
int j;
@ -242,13 +234,12 @@ int parseCommandLine(const char *argv0, int argc, const char *const *args)
if (cli_call>=0) ambiguous++;
if (ambiguous==1) {
WHY("Ambiguous command line call:");
complainCommandLine(" ", argc, args);
WHY_argv(" ", argc, args);
WHY("Matches the following known command line calls:");
complainCommandLine(" ", argc, command_line_options[cli_call].words);
}
if (ambiguous) {
complainCommandLine(" ", argc, command_line_options[i].words);
WHY_argv(" ", argc, command_line_options[cli_call].words);
}
if (ambiguous)
WHY_argv(" ", argc, command_line_options[i].words);
cli_call=i;
}
}
@ -257,9 +248,12 @@ int parseCommandLine(const char *argv0, int argc, const char *const *args)
if (ambiguous) return -1;
/* Complain if we found no matching calls */
if (cli_call<0) {
WHY("Unknown command line call:");
complainCommandLine(" ", argc, args);
return cli_usage();
if (argc) {
WHY("Unknown command line call:");
WHY_argv(" ", argc, args);
}
INFO("Use \"help\" command to see a list of valid commands");
return -1;
}
/* Otherwise, make call */
@ -897,10 +891,10 @@ int app_mdp_ping(int argc, const char *const *argv, struct command_line_option *
rx_stddev=sqrtf(rx_stddev);
/* XXX Report final statistics before going */
fprintf(stderr,"--- %s ping statistics ---\n", alloca_tohex_sid(ping_sid));
fprintf(stderr,"%lld packets transmitted, %lld packets received, %3.1f%% packet loss\n",
printf("--- %s ping statistics ---\n", alloca_tohex_sid(ping_sid));
printf("%lld packets transmitted, %lld packets received, %3.1f%% packet loss\n",
tx_count,rx_count,tx_count?(tx_count-rx_count)*100.0/tx_count:0);
fprintf(stderr,"round-trip min/avg/max/stddev%s = %lld/%.3f/%lld/%.3f ms\n",
printf("round-trip min/avg/max/stddev%s = %lld/%.3f/%lld/%.3f ms\n",
(samples<rx_count)?" (stddev calculated from last 1024 samples)":"",
rx_mintime,rx_mean,rx_maxtime,rx_stddev);
@ -1525,22 +1519,16 @@ int app_id_self(int argc, const char *const *argv, struct command_line_option *o
int app_test_rfs(int argc, const char *const *argv, struct command_line_option *o)
{
if (debug & DEBUG_VERBOSE) DEBUG_argv("command", argc, argv);
unsigned char bytes[8];
printf("Testing that RFS coder works properly.\n");
int i;
fprintf(stderr,"Testing that RFS coder works properly.\n");
for(i=0;i<65536;i++)
{
rfs_encode(i,&bytes[0]);
int zero=0;
int r=rfs_decode(&bytes[0],&zero);
if (i!=r) {
fprintf(stderr,"RFS encoding of %d decodes to %d: ",i,r);
int j;
for(j=0;j<zero;j++) fprintf(stderr," %02x",bytes[j]);
fprintf(stderr,"\n");
}
}
for(i=0;i<65536;i++) {
unsigned char bytes[8];
rfs_encode(i, &bytes[0]);
int zero=0;
int r=rfs_decode(&bytes[0],&zero);
if (i != r)
printf("RFS encoding of %d decodes to %d: %s\n", i, r, alloca_tohex(bytes, sizeof bytes));
}
return 0;
}

2
lsif.c
View File

@ -75,7 +75,7 @@ int scrapeProcNetRoute()
if (debug & DEBUG_OVERLAYINTERFACES) DEBUG("called");
FILE *f=fopen("/proc/net/route","r");
if (!f) return fprintf(stderr,"Can't read from /proc/net/route\n");
if (!f) return WHY_perror("fopen(\"/proc/net/route\")");
char line[1024],name[1024],dest[1024],mask[1024];

View File

@ -382,12 +382,12 @@ void overlay_interface_poll(struct sched_ent *alarm)
/* We have a frame from this interface */
if (debug&DEBUG_PACKETRX)
serval_packetvisualise(open_logging(),"Read from real interface", packet,plen);
DEBUG_packet_visualise("Read from real interface", packet,plen);
if (debug&DEBUG_OVERLAYINTERFACES) DEBUGF("Received %d bytes on interface %s",plen,interface->name);
if (packetOk(interface,packet,plen,NULL,recvttl,&src_addr,addrlen,1)) {
WHY("Malformed packet");
// Do we really want to attempt to parse it again?
//serval_packetvisualise(open_logging(), "Malformed packet", packet,plen);
//DEBUG_packet_visualise("Malformed packet", packet,plen);
}
}
@ -437,7 +437,7 @@ void overlay_dummy_poll(struct sched_ent *alarm)
if (plen > nread - 128)
plen = -1;
if (debug&DEBUG_PACKETRX)
serval_packetvisualise(open_logging(), "Read from dummy interface", &packet[128], plen);
DEBUG_packet_visualise("Read from dummy interface", &packet[128], plen);
bzero(&transaction_id[0],8);
bzero(&src_addr,sizeof(src_addr));
if (plen >= 4) {
@ -475,7 +475,7 @@ int overlay_broadcast_ensemble(int interface_number,
if (debug&DEBUG_PACKETTX)
{
DEBUGF("Sending this packet via interface #%d",interface_number);
serval_packetvisualise(open_logging(),NULL,bytes,len);
DEBUG_packet_visualise(NULL,bytes,len);
}
overlay_interface *interface = &overlay_interfaces[interface_number];
@ -1029,3 +1029,20 @@ long long parse_quantity(char *q)
return WHY("Could not parse quantity");
}
}
void logServalPacket(int level, const char *file, unsigned int line, const char *function, const char *message, const unsigned char *packet, size_t len)
{
char *buffer;
size_t size;
FILE *m = open_memstream(&buffer, &size);
if (m == NULL) {
WHY_perror("open_memstream");
return;
}
if (serval_packetvisualise(m, message, packet, len) == -1)
WHY("serval_packetvisualise() failed");
if (fclose(m) == EOF)
WHY_perror("fclose");
else
logString(level, file, line, function, buffer);
}

View File

@ -34,20 +34,20 @@ int op_append_type(overlay_buffer *headers,overlay_frame *p)
{
case OF_TYPE_FLAG_NORMAL:
c[0]=p->type|p->modifiers;
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"type resolves to %02x\n",c[0]);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("type resolves to %02x",c[0]);
if (ob_append_bytes(headers,c,1)) return -1;
break;
case OF_TYPE_FLAG_E12:
c[0]=(p->type&OF_MODIFIER_BITS)|OF_TYPE_EXTENDED12;
c[1]=(p->type>>4)&0xff;
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"type resolves to %02x%02x\n",c[0],c[1]);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("type resolves to %02x%02x",c[0],c[1]);
if (ob_append_bytes(headers,c,2)) return -1;
break;
case OF_TYPE_FLAG_E20:
c[0]=(p->type&OF_MODIFIER_BITS)|OF_TYPE_EXTENDED20;
c[1]=(p->type>>4)&0xff;
c[2]=(p->type>>12)&0xff;
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"type resolves to %02x%02x%02x\n",c[0],c[1],c[2]);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("type resolves to %02x%02x%02x",c[0],c[1],c[2]);
if (ob_append_bytes(headers,c,3)) return -1;
break;
default:
@ -194,21 +194,16 @@ overlay_buffer *overlay_payload_unpackage(overlay_frame *b) {
int dump_queue(char *msg,int q)
{
overlay_txqueue *qq=&overlay_tx[q];
printf("Contents of TX queue #%d (%s):\n",q,msg);
printf(" length=%d, maxLength=%d\n",qq->length,qq->maxLength);
DEBUGF("Contents of TX queue #%d (%s):",q,msg);
DEBUGF(" length=%d, maxLength=%d",qq->length,qq->maxLength);
struct overlay_frame *f=qq->first,*l=qq->last;
printf(" head of queue = %p, tail of queue = %p\n",
f,l);
DEBUGF(" head of queue = %p, tail of queue = %p", f, l);
struct overlay_frame *n=f;
int count=0;
while(n) {
printf(" queue entry #%d : prev=%p, next=%p\n",
count,n->prev,n->next);
if (n==n->next) {
printf(" ERROR: loop in queue\n");
DEBUGF(" queue entry #%d : prev=%p, next=%p", count,n->prev,n->next);
if (n==n->next) {
WHY(" ERROR: loop in queue");
return -1;
}
n=n->next;
@ -218,18 +213,13 @@ int dump_queue(char *msg,int q)
int dump_payload(overlay_frame *p,char *message)
{
fflush(stdout);
fprintf(stderr,
"+++++\nFrame from %s to %s of type 0x%02x %s:\n",
DEBUGF( "+++++\nFrame from %s to %s of type 0x%02x %s:",
alloca_tohex_sid(p->source),
alloca_tohex_sid(p->destination),p->type,
message?message:"");
fprintf(stderr," next hop is %s\n",alloca_tohex_sid(p->nexthop));
fflush(stderr);
if (p->payload) dump("payload contents",
&p->payload->bytes[0],p->payload->length);
fflush(stdout); fflush(stderr);
fprintf(stderr,"-----\n");
DEBUGF(" next hop is %s",alloca_tohex_sid(p->nexthop));
if (p->payload)
dump("payload contents", &p->payload->bytes[0],p->payload->length);
return 0;
}

View File

@ -126,8 +126,10 @@ int packetOkDNA(unsigned char *packet,int len,unsigned char *transaction_id,
bcopy(&temp[0],&packet[HEADERFIELDS_LEN],payloadRotation);
}
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"Packet passes sanity checks and is ready for decoding.\n");
if (debug&DEBUG_PACKETFORMATS) dump("unrotated packet",packet,len);
if (debug&DEBUG_PACKETFORMATS) {
DEBUG("Packet passes sanity checks and is ready for decoding");
dump("unrotated packet",packet,len);
}
if (parseP) return process_packet(packet,len,recvttl,recvaddr,recvaddrlen); else return 0;
}
@ -253,10 +255,11 @@ int packetFinalise(unsigned char *packet,int packet_maxlen,int recvttl,
payloadRotation=(*packet_len)-HEADERFIELDS_LEN;
if (payloadRotation>0xff) payloadRotation=0xff;
payloadRotation=random()%payloadRotation;
if (debug&DEBUG_SECURITY)
fprintf(stderr,"Known Plaintext counter-measure: rotating packet payload by 0x%02x bytes.\n",
if (debug&DEBUG_SECURITY) {
DEBUGF("Known Plaintext counter-measure: rotating packet payload by 0x%02x bytes",
payloadRotation);
if (debug&DEBUG_SECURITY) dump("unrotated packet",packet,*packet_len);
dump("unrotated packet",packet,*packet_len);
}
/* Now rotate the payload */
{
@ -297,11 +300,11 @@ int extractRequest(unsigned char *packet,int *packet_ofs,int packet_len,
*bytes|=packet[(*packet_ofs)++];
*flags=packet[(*packet_ofs)++];
if (debug&DEBUG_PACKETFORMATS) printf("Write flags = 0x%02x\n",*flags);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("Write flags = 0x%02x",*flags);
if (*packet_ofs<0||(*packet_ofs)+(*bytes)>=packet_len)
{
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"Packet offset is %d, length is %d, and asked for %d bytes.\n",*packet_ofs,packet_len,*bytes);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("Packet offset is %d, length is %d, and asked for %d bytes",*packet_ofs,packet_len,*bytes);
return WHY("mal-formed request packet (too short for claimed data)");
}
@ -332,7 +335,7 @@ int extractResponses(struct in_addr sender,unsigned char *buffer,int len,struct
switch(buffer[ofs])
{
case ACTION_EOT:
if (debug&DEBUG_DNARESPONSES) fprintf(stderr,"Reached response packet EOT.\n");
if (debug&DEBUG_DNARESPONSES) DEBUGF("Reached response packet EOT");
case ACTION_DECLINED: case ACTION_OKAY:
case ACTION_CREATEHLR:
r->response_len=0; break;
@ -378,7 +381,7 @@ int extractResponses(struct in_addr sender,unsigned char *buffer,int len,struct
case ACTION_XFER:
default:
free(r);
if (debug&(DEBUG_DNARESPONSES|DEBUG_PACKETFORMATS)) fprintf(stderr,"Encountered unimplemented response code 0x%02x @ 0x%x\n",buffer[ofs],ofs);
if (debug&(DEBUG_DNARESPONSES|DEBUG_PACKETFORMATS)) DEBUGF("Encountered unimplemented response code 0x%02x @ 0x%x",buffer[ofs],ofs);
fixResponses(responses);
return WHY("Encountered unimplemented response type");
}
@ -403,7 +406,7 @@ int extractResponses(struct in_addr sender,unsigned char *buffer,int len,struct
if (r->peer_id>peer_count) r->peer_id=-1;
/* Link new response into chain */
if (debug&DEBUG_DNARESPONSES) printf("Linking response into response set.\n");
if (debug&DEBUG_DNARESPONSES) DEBUGF("Linking response into response set");
r->prev=responses->last_response;
if (responses->last_response)
responses->last_response->next=r;
@ -436,7 +439,7 @@ int packageVariableSegment(unsigned char *data,int *dlen,
bytes=buffer_size-(*dlen)-8;
if ((h->value_len-offset)<bytes) bytes=h->value_len-offset;
if (bytes<0) bytes=0;
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"Packaging %d bytes of variable\n",bytes);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("Packaging %d bytes of variable",bytes);
/* Describe variable */
@ -455,7 +458,7 @@ int packageVariableSegment(unsigned char *data,int *dlen,
/* Number of bytes in this segment */
data[(*dlen)++]=(bytes>>8)&0xff;
data[(*dlen)++]=bytes&0xff;
if (debug&DEBUG_PACKETFORMATS) fprintf(stderr,"Packaging %d bytes\n",bytes);
if (debug&DEBUG_PACKETFORMATS) DEBUGF("Packaging %d bytes",bytes);
/* Package the variable value itself (or part thereof) */
bcopy(&h->response[offset],&data[*dlen],bytes);

16
peers.c
View File

@ -60,7 +60,7 @@ int getBroadcastAddresses(struct in_addr peers[],int *peer_count,int peer_max){
size_t bytesRead;
struct nlmsghdr *hdr;
if (debug&DEBUG_PEERS) fprintf(stderr,"Reading broadcast addresses (linux style)\n");
if (debug&DEBUG_PEERS) DEBUG("Reading broadcast addresses (linux style)");
netsock = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
@ -110,7 +110,7 @@ int getBroadcastAddresses(struct in_addr peers[],int *peer_count,int peer_max){
struct ifaddrs *ifaddr,*ifa;
int family;
if (debug&DEBUG_PEERS) fprintf(stderr,"Reading broadcast addresses (posix style)\n");
if (debug&DEBUG_PEERS) DEBUG("Reading broadcast addresses (posix style)");
if (getifaddrs(&ifaddr) == -1) {
return WHY_perror("getifaddr");
@ -134,7 +134,7 @@ int getBroadcastAddresses(struct in_addr peers[],int *peer_count,int peer_max){
}
}
#else
if (debug&DEBUG_PEERS) fprintf(stderr,"Don't know how to read broadcast addresses :(\n");
if (debug&DEBUG_PEERS) DEBUG("Don't know how to read broadcast addresses :(");
#endif
#endif
return 0;
@ -200,27 +200,27 @@ int sendToPeers(unsigned char *packet,int packet_len,int method,int peerId,struc
{
peer_addr.sin_addr=peers[i];
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) fprintf(stderr,"Sending packet to peer #%d\n",i);
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) DEBUGF("Sending packet to peer #%d",i);
ret=sendto(sock,packet,packet_len,0,(struct sockaddr *)&peer_addr,sizeof(peer_addr));
if (ret<packet_len)
{
/* XXX something bad happened */
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) fprintf(stderr,"Could not send to peer %s\n",inet_ntoa(peer_addr.sin_addr));
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) DEBUGF("Could not send to peer %s",inet_ntoa(peer_addr.sin_addr));
}
else
{
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) fprintf(stderr,"Sent request to peer %s\n",inet_ntoa(peer_addr.sin_addr));
if (debug&(DEBUG_PACKETTX|DEBUG_PEERS)) DEBUGF("Sent request to peer %s",inet_ntoa(peer_addr.sin_addr));
n++;
/* If sending to only one peer, return now */
if (method==i) break;
}
}
else
if (debug&DEBUG_PEERS) fprintf(stderr,"Peer %s has already replied, so not sending again.\n",
if (debug&DEBUG_PEERS) DEBUGF("Peer %s has already replied, so not sending again",
inet_ntoa(peer_addr.sin_addr));
if (debug&DEBUG_PEERS) fprintf(stderr,"Sent request to %d peers.\n",n);
if (debug&DEBUG_PEERS) DEBUGF("Sent request to %d peers",n);
return 0;

View File

@ -365,11 +365,8 @@ int rhizome_manifest_extract_signature(rhizome_manifest *m,int *ofs)
bcopy(&m->manifestdata[(*ofs)+1+32],&sigBuf[96],32);
/* Get public key of signatory */
bcopy(&m->manifestdata[(*ofs)+1+64],&publicKey[0],crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES);
unsigned long long mlen=0;
int r=crypto_sign_edwards25519sha512batch_open(verifyBuf,&mlen,&sigBuf[0],128,
publicKey);
fflush(stdout); fflush(stderr);
int r=crypto_sign_edwards25519sha512batch_open(verifyBuf,&mlen,&sigBuf[0],128, publicKey);
#endif
if (r) {
(*ofs)+=len;

View File

@ -660,6 +660,10 @@ int overlay_interface_init_socket(int i);
long long overlay_time_until_next_tick();
int overlay_rx_messages();
void logServalPacket(int level, const char *file, unsigned int line, const char *function, const char *message, const unsigned char *packet, size_t len);
#define DEBUG_packet_visualise(M,P,N) logServalPacket(LOG_LEVEL_DEBUG, __FILE__, __LINE__, __FUNCTION__, (M), (P), (N))
int overlay_add_selfannouncement();
int overlay_frame_package_fmt1(overlay_frame *p,overlay_buffer *b);
int overlay_interface_args(const char *arg);
@ -797,7 +801,7 @@ int overlay_saw_mdp_containing_frame(overlay_frame *f,long long now);
#include "nacl.h"
int serval_packetvisualise(FILE *f,char *message,unsigned char *packet,int plen);
int serval_packetvisualise(FILE *f, const char *message, const unsigned char *packet, size_t len);
int overlay_broadcast_drop_check(unsigned char *a);
int overlay_address_is_broadcast(unsigned char *a);

View File

@ -1,3 +1,23 @@
/*
Serval Mesh
Copyright (C) 2010-2012 Paul Gardner-Stephen
Copyright (C) 2010-2012 Serval Project Pty Limited
Copyright (C) 2012 Serval Project Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -26,7 +46,6 @@ int main(int argc,char **argv)
int i;
len=random()%8192;
for(i=0;i<len;i++) buff[i]=random()&0xff;
serval_packetvisualise(stdout,"Fuzz Test",buff,len);
}
return 0;
@ -34,7 +53,7 @@ int main(int argc,char **argv)
#endif
int serval_packetvisualise_renderaddress(FILE *f,unsigned char *packet,int *ofs,int senderP)
int serval_packetvisualise_renderaddress(FILE *f, const unsigned char *packet, size_t *ofs, int senderP)
{
switch(packet[*ofs]) {
@ -128,7 +147,7 @@ int serval_packetvisualise_renderaddress(FILE *f,unsigned char *packet,int *ofs,
if (skip) {
fprintf(f," <literal 256 bit address, assigned index 0x");
int i;
for(i=0;i<skip;i++) fprintf(stderr,"%02x",packet[(*ofs)+skip]);
for(i=0;i<skip;i++) fprintf(f,"%02x",packet[(*ofs)+skip]);
fprintf(f,">");
} else
fprintf(f," <literal 256 bit address>");
@ -139,7 +158,7 @@ int serval_packetvisualise_renderaddress(FILE *f,unsigned char *packet,int *ofs,
}
int isOverlayPacket(FILE *f,unsigned char *packet,int *ofs,int len)
int isOverlayPacket(FILE *f, const unsigned char *packet, size_t *ofs, size_t len)
{
if (packet[(*ofs)]!=0x4f) return 0;
if (packet[(*ofs)+1]!=0x10) return 0;
@ -195,7 +214,7 @@ int isOverlayPacket(FILE *f,unsigned char *packet,int *ofs,int len)
/* Assuming that there is no compression or crypto, we just use the plain body
of the frame. */
unsigned char *frame=&packet[*ofs];
const unsigned char *frame=&packet[*ofs];
int frame_len=rfs;
next_frame_ofs=(*ofs)+rfs;
@ -544,13 +563,12 @@ int isOverlayPacket(FILE *f,unsigned char *packet,int *ofs,int len)
return 1;
}
int isDNAPacket(FILE *f,unsigned char *packet,int *ofs,int len)
int isDNAPacket(FILE *f, const unsigned char *packet, size_t *ofs, size_t len)
{
return 0;
}
int serval_packetvisualise(FILE *f,char *message,unsigned char *packet,int len)
int serval_packetvisualise(FILE *f, const char *message, const unsigned char *packet, size_t len)
{
if (f == NULL)
return -1;
@ -570,19 +588,18 @@ int serval_packetvisualise(FILE *f,char *message,unsigned char *packet,int len)
fprintf(f,"\n");
}
int ofs=0;
size_t ofs=0;
fprintf(f," Packet Structure:\n");
if (isOverlayPacket(f,packet,&ofs,len))
{ }
;
else if (isDNAPacket(f,packet,&ofs,len))
{ }
;
else {
/* Unknown packet type. */
}
if (ofs<len) {
fprintf(stderr," WARNING: The last %d (0x%x) bytes of the packet were not parsed.\n",len-ofs,len-ofs);
fprintf(f," WARNING: The last %d (0x%x) bytes of the packet were not parsed.\n",len-ofs,len-ofs);
for(i=0;i<len;i+=16)
if (i+15>=ofs)
{

View File

@ -247,9 +247,7 @@ int main(int argc, char **argv){
}
printf(" OK\n");
}
fprintf(stderr,"Finished. Total encoding: %d->%d bytes\n",
nByteIn, nByteOut);
fprintf(stderr,"Avg size increase: %.3f%%\n",
(nByteOut-nByteIn)*100.0/(double)nByteIn);
printf("Finished. Total encoding: %d->%d bytes\n", nByteIn, nByteOut);
printf("Avg size increase: %.3f%%\n", (nByteOut-nByteIn)*100.0/(double)nByteIn);
}
#endif /* ENCODER_TEST */