V8/usr/sys/chaosld/chset.c

/*
 *             C H  S E T
 *
 * Chaosnet line discipline - routines to set various fields in a packet.
 *
 *
 * (c) Copyright 1984  Nirvonics, Inc.
 *
 * Written by Kurt Gollhardt
 * Last update Wed Oct 24 13:39:42 1984
 *
 * This software is the property of Nirvonics, Inc.
 * All rights reserved.
 *
 */

#include "ch.h"
#if NCH > 0
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/stream.h"
#include "../h/conf.h"
#include "../chaosld/types.h"
#include "../chaosld/constants.h"
#include "../chaosld/globals.h"


/*
 * Set (STS) status info in a packet, reflecting the current state
 * of the connection.
 */
setsts(conn, pkt)
     register struct connection    *conn;
     register struct packet        *pkt;
{
     register struct block         *bp;
     register struct sts_data      sts;

     free_pkdata(pkt);
     pkt->pk_op = STSOP;
     pkt->pk_ackn = conn->cn_racked = conn->cn_rread;
     sts.sts_receipt = conn->cn_rlast;
     sts.sts_rwsize = conn->cn_rwsize;
     append_packet(pkt, &sts, sizeof(sts));
}


/*
 * Set connection info fields in a packet.
 * Many routines count on the fact that this clears pk_type and next.
 */
setconn(conn, pkt)
register struct connection *conn;
register struct packet *pkt;
{
	pkt->pk_daddr = conn->cn_faddr;
	pkt->pk_didx = conn->cn_fidx;
	pkt->pk_saddr = Chmyaddr;
	pkt->pk_sidx = conn->cn_lidx;
	pkt->pk_type = 0;
	pkt->next = NOPKT;
	pkt->pk_fc = 0;
}


/*
 * Set acknowledge field of packet from connection.
 */
setack(conn, pkt)
     struct connection   *conn;
     struct packet       *pkt;
{
     pkt->pk_ackn = conn->cn_racked = conn->cn_rread;
}

#endif