1
0
Files
irix-657m-src/eoe/cmd/dhcp_server/ldap/ldap_callback.c
2022-09-29 17:59:04 +03:00

52 lines
1019 B
C

#include <stdio.h>
#include <time.h>
#include <lber.h>
#include <ldap.h>
#include "ldap_dhcp.h"
static ldhcp_callback_proc *callbacks[FD_SETSIZE];
extern fd_set ldhcp_readset, ldhcp_exceptset, ldhcp_sendset;
extern int ldhcp_maxfd;
ldhcp_callback_proc *
ldhcp_callback_new(int fd, ldhcp_callback_proc *proc, unsigned flags)
{
callbacks[fd] = proc;
/*
** Add this socket to the central select.
*/
if (flags & LDHCP_READ) {
FD_SET(fd, &ldhcp_readset);
}
if (flags & LDHCP_WRITE) {
FD_SET(fd, &ldhcp_sendset);
}
if (flags & LDHCP_EXCEPT) {
FD_SET(fd, &ldhcp_exceptset);
}
ldhcp_maxfd = (fd >= ldhcp_maxfd) ? (fd + 1) : ldhcp_maxfd;
return callbacks[fd];
}
int
ldhcp_callback_remove(int fd)
{
callbacks[fd] = (ldhcp_callback_proc *)0;
FD_CLR(fd, &ldhcp_readset);
FD_CLR(fd, &ldhcp_sendset);
FD_CLR(fd, &ldhcp_exceptset);
return LDHCP_OK;
}
ldhcp_callback_proc *
ldhcp_callback_get(int fd)
{
if ((fd < 0) || (fd > FD_SETSIZE)) {
return (ldhcp_callback_proc *)0;
}
return callbacks[fd];
}