/* * Setup to accept new incoming connections */ static void bsd_accept( const struct security_driver * driver, char *(*conf_fn)(char *, void *), int in, int out, void (*fn)(security_handle_t *, pkt_t *), void *datap) { struct stat sbuf; assert(in >= 0 && out >= 0); assert(fn != NULL); (void)out; /* Quiet unused parameter warning */ (void)driver; /* Quiet unused parameter warning */ (void)conf_fn; (void)datap; /* * We assume in and out point to the same socket, and just use * in. */ dgram_socket(&netfd4.dgram, in); dgram_socket(&netfd6.dgram, in); /* * Assign the function and return. When they call recvpkt later, * the recvpkt callback will call this function when it discovers * new incoming connections */ netfd4.accept_fn = fn; netfd4.recv_security_ok = &bsd_recv_security_ok; netfd4.prefix_packet = &bsd_prefix_packet; netfd4.driver = &bsd_security_driver; /* check if in is a socket */ if (fstat(in, &sbuf) == -1) { g_warning("Can't fstat file descriptor; cannot use BSD auth"); } else if (S_ISSOCK(sbuf.st_mode)) { udp_addref(&netfd4, &udp_netfd_read_callback); } else { g_warning("input file descriptor is not a socket; cannot use BSD auth"); } }
/* * Setup to accept new incoming connections */ static void bsdudp_accept( const struct security_driver *driver, char * (*conf_fn)(char *, void *), int in, int out, void (*fn)(security_handle_t *, pkt_t *), void *datap) { (void)driver; /* Quiet unused parameter warning */ (void)out; /* Quiet unused parameter warning */ (void)conf_fn; (void)datap; assert(in >= 0 && out >= 0); assert(fn != NULL); /* * We assume in and out point to the same socket, and just use * in. */ dgram_socket(&netfd4.dgram, in); dgram_socket(&netfd6.dgram, in); /* * Assign the function and return. When they call recvpkt later, * the recvpkt callback will call this function when it discovers * new incoming connections */ netfd4.accept_fn = fn; netfd4.recv_security_ok = &bsd_recv_security_ok; netfd4.prefix_packet = &bsd_prefix_packet; netfd4.need_priv_port = 1; netfd4.driver = &bsdudp_security_driver; udp_addref(&netfd4, &udp_netfd_read_callback); }