#include "config.h" #ifdef USE_ROSE #include #include #include #include #include #include /* for ax25_address in rose.h */ #include #include #include "net.h" #include "random.h" #include "utils.h" // ARRAY_SIZE #include "compat.h" void rose_gen_sockaddr(struct sockaddr **addr, socklen_t *addrlen) { struct sockaddr_rose *rose; rose = zmalloc(sizeof(struct sockaddr_rose)); rose->srose_family = PF_ROSE; rose->srose_addr.rose_addr[0] = rand(); rose->srose_addr.rose_addr[1] = rand(); rose->srose_addr.rose_addr[2] = rand(); rose->srose_addr.rose_addr[3] = rand(); rose->srose_addr.rose_addr[4] = rand(); generate_rand_bytes((unsigned char *) rose->srose_call.ax25_call, 7 * 2); rose->srose_ndigis = rand(); *addr = (struct sockaddr *) rose; *addrlen = sizeof(struct sockaddr_rose); } #define NR_SOL_ROSE_OPTS ARRAY_SIZE(rose_opts) static const unsigned int rose_opts[] = { ROSE_DEFER, ROSE_T1, ROSE_T2, ROSE_T3, ROSE_IDLE, ROSE_QBITINCL, ROSE_HOLDBACK }; void rose_setsockopt(struct sockopt *so) { unsigned char val; so->level = SOL_ROSE; val = rand() % NR_SOL_ROSE_OPTS; so->optname = rose_opts[val]; } #endif .