Я пытаюсь понять, что делает следующий (код ниже), и я стараюсь понять концепцию sockunions. Может кто-нибудь мне помочь? Что это связано с потоками и файловыми дескрипторами потоков?Quagga bgp_accept код
Цените свою помощь заранее и будете открыты для любых ресурсов, которые вы можете рекомендовать!
Сара
static int
bgp_accept (struct thread *thread)
{
int bgp_sock;
int accept_sock;
union sockunion su;
struct bgp_listener *listener = THREAD_ARG(thread);
struct peer *peer;
struct peer *peer1;
char buf[SU_ADDRSTRLEN];
/* Register accept thread. */
accept_sock = THREAD_FD (thread);
if (accept_sock < 0)
{
zlog_err ("accept_sock is nevative value %d", accept_sock);
return -1;
}
listener->thread = thread_add_read (master, bgp_accept, listener, accept_sock);
/* Accept client connection. */
bgp_sock = sockunion_accept (accept_sock, &su);
if (bgp_sock < 0)
{
...