42 lines
876 B
C
42 lines
876 B
C
/*
|
|
* Copyright 1988 Silicon Graphics, Inc. All rights reserved.
|
|
*
|
|
* PacketBuf and Packet decoders.
|
|
*/
|
|
#include "datastream.h"
|
|
#include "packetbuf.h"
|
|
#include "packetview.h"
|
|
#include "protocol.h"
|
|
#include "snooper.h"
|
|
|
|
void
|
|
pb_decode(PacketBuf *pb, Snooper *sn, int hex, PacketView *pv)
|
|
{
|
|
DecodeArgs da;
|
|
|
|
DA_INIT(&da, sn, hex, pv);
|
|
pb_scan(pb, pb_decodepacket, &da);
|
|
}
|
|
|
|
/* ARGSUSED */
|
|
int
|
|
pb_decodepacket(PacketBuf *pb, Packet *p, void *arg)
|
|
{
|
|
DecodeArgs *da = arg;
|
|
|
|
return p_decode(p, da->da_snoop, da->da_hex, da->da_view);
|
|
}
|
|
|
|
int
|
|
p_decode(Packet *p, Snooper *sn, int hex, PacketView *pv)
|
|
{
|
|
Protocol *rawproto;
|
|
DataStream ds;
|
|
|
|
rawproto = sn->sn_rawproto;
|
|
ds_init(&ds, p->p_sp.sp_data + sn->sn_rawhdrpad,
|
|
p->p_len - sn->sn_rawhdrpad, DS_DECODE,
|
|
rawproto ? rawproto->pr_byteorder : DS_BIG_ENDIAN);
|
|
return pv_decodepacket(pv, sn, &p->p_sp.sp_hdr, hex, &ds);
|
|
}
|