1
0
Files
irix-657m-src/irix/cmd/netman/lib/sn_xdr.c
2022-09-29 17:59:04 +03:00

40 lines
898 B
C

/*
* Copyright 1989 Silicon Graphics, Inc. All rights reserved.
*
* Snoop protocol structure xdr routines.
*/
#include <stdio.h>
#include <rpc/types.h>
#include <rpc/xdr.h>
#include "snooper.h"
int
xdr_snoopheader(XDR *xdr, SnoopHeader *sh)
{
return xdr_u_long(xdr, &sh->snoop_seq)
&& xdr_u_short(xdr, &sh->snoop_flags)
&& xdr_u_short(xdr, &sh->snoop_packetlen)
&& xdr_long(xdr, &sh->snoop_timestamp.tv_sec)
&& xdr_long(xdr, &sh->snoop_timestamp.tv_usec);
}
int
xdr_snooppacket(XDR *xdr, SnoopPacket *sp, u_int *len, u_int maxlen)
{
u_int cnt, pos;
if (!xdr_snoopheader(xdr, &sp->sp_hdr) || !xdr_u_int(xdr, len))
return FALSE;
cnt = *len;
if (cnt > maxlen) {
pos = xdr_getpos(xdr) + RNDUP(cnt);
*len = maxlen;
} else
pos = 0;
if (!xdr_opaque(xdr, sp->sp_data, *len))
return FALSE;
if (pos != 0 && !xdr_setpos(xdr, pos))
return FALSE;
return TRUE;
}