| 
 | 
This example uses options management to request that the TLI endpoint be configured to allow the sending of broadcast datagrams.
In this example, fd represents a UDP endpoint obtained by using t_open on _PATH_UDP (defined in <paths.h>).
\#include <sys/types.h>
\#include <sys/socket.h>
\#include <netinet/in.h>
\#include <tiuser.h>
\#include <fcntl.h>
\#include <paths.h>
    .
    .
    int fd, r;
    fd = t_open(_PATH_UDP, O_RDWR, (struct t_info *)0);
    .
    .
    r = tli_set_broadcast(fd);
    .
    .
int
tli_set_broadcast(fd)
    int fd;
{
    struct t_optmgmt *opt;
    struct opthdr *ohdr;
    /* use t_alloc to acquire a t_optmgmt structure */
    if (!(opt = (struct t_optmgmt *) t_alloc(fd, T_OPTMGMT, T_ALL))) {
        fprintf(stderr, "Couldn't allocate t_optmgmt\n");
        return -1;
    }
    /* set ohdr to point at the optmgmt structure */
    ohdr = (struct opthdr *) opt->opt.buf;
    ohdr->level = SOL_SOCKET;        /* generic option */
    ohdr->name = SO_BROADCAST;       /* desire broadcast ability */
    ohdr->len = OPTLEN(sizeof(int)); /* rounds length by sizeof(long) */
    /* store desired value immediately following the opthdr */
    *((int *) OPTVAL(ohdr)) = 1;     /* 1 means turn on */
    opt->opt.len = sizeof(struct opthdr) + OPTLEN(sizeof(int));
    opt->flags = T_NEGOTIATE;        /* change current value */
    if (t_optmgmt(fd, opt, opt) < 0) {
        fprintf(stderr,"Options management failed\n");
        return -1;
    }
    (void) t_free(opt, T_OPTMGMT);
    return 0;
}