Create pinger.
- Parameters
-
| job | Job control interface |
| hostname | Hostname to ping |
| timeout | Timeout (in ticks) |
| len | Payload length |
| count | Number of packets to send (or zero for no limit) |
| callback | Callback function (or NULL) |
- Return values
-
Definition at line 313 of file pinger.c.
317 {
320
321
324
325
338
339
341 hostname,
NULL ) ) != 0 ) {
342 DBGC (
pinger,
"PINGER %p could not open socket: %s\n",
344 goto err;
345 }
346
347
350 return 0;
351
352 err:
356}
#define NULL
NULL pointer (VOID *)
struct arbelprm_rc_send_wqe rc
static unsigned int count
Number of entries.
#define EINVAL
Invalid argument.
#define ETIMEDOUT
Connection timed out.
#define ENOMEM
Not enough space.
void intf_plug_plug(struct interface *a, struct interface *b)
Plug two object interfaces together.
static void intf_init(struct interface *intf, struct interface_descriptor *desc, struct refcnt *refcnt)
Initialise an object interface.
void * zalloc(size_t size)
Allocate cleared memory.
static struct interface_descriptor pinger_xfer_desc
Pinger data transfer interface descriptor.
static void pinger_close(struct pinger *pinger, int rc)
Close pinger.
static struct interface_descriptor pinger_job_desc
Pinger job control interface descriptor.
static void pinger_expired(struct retry_timer *timer, int over __unused)
Handle timer expiry.
#define ref_put(refcnt)
Drop reference to object.
#define ref_init(refcnt, free)
Initialise a reference counter.
int xfer_open_named_socket(struct interface *xfer, int semantics, struct sockaddr *peer, const char *name, struct sockaddr *local)
Open named socket.
char * strerror(int errno)
Retrieve string representation of error number.
unsigned int remaining
Number of remaining expiry events (zero to continue indefinitely)
struct interface job
Job control interface.
struct retry_timer timer
Timer.
unsigned long timeout
Timeout.
void(* callback)(struct sockaddr *src, unsigned int sequence, size_t len, int rc)
Callback function.
size_t len
Payload length.
struct refcnt refcnt
Reference count.
struct interface xfer
Data transfer interface.
References pinger::callback, count, DBGC, EINVAL, ENOMEM, ETIMEDOUT, intf_init(), intf_plug_plug(), pinger::job, len, pinger::len, NULL, pinger_close(), pinger_expired(), pinger_job_desc, pinger_xfer_desc, pinger::rc, rc, ref_init, ref_put, pinger::refcnt, pinger::remaining, SOCK_ECHO, src, strerror(), pinger::timeout, timeout(), pinger::timer, pinger::xfer, xfer_open_named_socket(), and zalloc().
Referenced by ping().