48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
|
/*
|
||
|
* Copyright (c) 1993 by the University of Southern California
|
||
|
*
|
||
|
* For copying and distribution information, please see the file
|
||
|
* <usc-copyr.h>.
|
||
|
*
|
||
|
* Written by bcn 1/93 to send a single packet to a peer
|
||
|
*/
|
||
|
|
||
|
#include <usc-copyr.h>
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <ardp.h>
|
||
|
#include <plog.h>
|
||
|
#include <errno.h>
|
||
|
#include <perrno.h>
|
||
|
|
||
|
extern int ardp_srvport;
|
||
|
extern int ardp_prvport;
|
||
|
|
||
|
/*
|
||
|
* ardp_snd_pkt - transmits a single packet to address in req
|
||
|
*
|
||
|
* ardp_snd_pkt takes a pointer to a packet of type PTEXT to be
|
||
|
* sent to a peer identified by req->peer. It then send the packet to
|
||
|
* the peer. If the packet was sent successfully, ARDP_SUCCESS is
|
||
|
* returned. Successful transmission of the packet does not provide
|
||
|
* any assurance of receipt by the peer. If the attempt to send
|
||
|
* the packet fails, ARDP_NOT_SENT is returned.
|
||
|
*/
|
||
|
int
|
||
|
ardp_snd_pkt(pkt,req)
|
||
|
PTEXT pkt;
|
||
|
RREQ req;
|
||
|
{
|
||
|
int sent;
|
||
|
|
||
|
sent = sendto(((ardp_prvport != -1) ? ardp_prvport : ardp_srvport),
|
||
|
pkt->start, pkt->length, 0, &(req->peer), S_AD_SZ);
|
||
|
|
||
|
if(sent == pkt->length) return(ARDP_SUCCESS);
|
||
|
|
||
|
plog(L_NET_ERR, req, "Attempt to send message failed (errno %d %s)",
|
||
|
errno, unixerrstr(), 0);
|
||
|
|
||
|
return(ARDP_NOT_SENT);
|
||
|
}
|