OSSP CVS Repository

ossp - ossp-pkg/sa/sa_test.c 1.4
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/sa/sa_test.c 1.4

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <time.h>
#include <sys/utsname.h>
#include <unistd.h>

#include "sa.h"

static void die(char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    fprintf(stderr, "test:ERROR: ");
    vfprintf(stderr, fmt, ap);
    fprintf(stderr, "\n");
    va_end(ap);
    exit(1);
}

int main(int argc, char *argv[]) 
{
    sa_addr_t *ra;
    sa_addr_t *la;
    sa_t *sa;
    char caBuf[1024];
    int nBuf;
    char caTime[15+1];
    time_t now;
    struct tm *tm;
    struct utsname uts;
    char *cp;
    char caTag[32+1];
    char *cpHost;
    int n;

    /* create remote address */
    if (sa_addr_create(&ra) != SA_OK)
        die("sa_addr_create (ra)");
    if (sa_addr_u2a(ra, "inet://141.1.129.1:514") != SA_OK)
        die("sa_addr_u2a (ra)");

    /* create local address */
    if (sa_addr_create(&la) != SA_OK)
        die("sa_addr_create (la)");
    if (sa_addr_u2a(la, "inet://0.0.0.0:0") != SA_OK)
        die("sa_addr_u2a (la)");

    /* create datagram socket */
    if (sa_create(&sa) != SA_OK)
        die("sa_create");
    if (sa_type(sa, SA_TYPE_DATAGRAM) != SA_OK)
        die("sa_type");

    /* bind socket to local address */
    if (sa_bind(sa, la) != SA_OK)
        die("sa_bind");

    /* RFC3164: The BSD syslog Protocol; C. Lonvick; August 2001. */
    now = time(NULL);
    tm = localtime(&now);
    strftime(caTime, sizeof(caTime), "%b %e %H:%M:%S", tm);
    if (uname(&uts) == -1)
        die("uname");
    cpHost = strdup(uts.nodename);
    if ((cp = strchr(cpHost, '.')) != NULL)
        *cp = '\0';
    strcpy(caTag, "progname[12]: ");
    if (strlen(caTag) > 32)
        caTag[32] = '\0';
    sprintf(caBuf, "<16>%s %s %s[%ld]: %s", caTime, cpHost, 
            argv[0], (long)getpid(), "test for Internet Datagram socket");
    fprintf(stderr, "Send to syslog: \"%s\"\n", caBuf);

    /* send message to syslogd(8) */
    nBuf = strlen(caBuf);
    if (sa_writeto(sa, caBuf, nBuf, (size_t *)&n, ra) != SA_OK)
        die("sa_writeto");

    /* destroy socket and address objects */
    if (sa_destroy(sa) != SA_OK)
        die("sa_destroy");
    if (sa_addr_destroy(la) != SA_OK)
        die("sa_addr_destroy (la)");
    if (sa_addr_destroy(ra) != SA_OK)
        die("sa_addr_destroy (ra)");

    return 0;
}


CVSTrac 2.0.1