【问题标题】:Quagga bgp_accept codeQuagga bgp_accept 代码
【发布时间】:2013-09-27 14:59:13
【问题描述】:

我正在尝试理解以下代码(下面的代码)在做什么,并且正在努力理解 sockunions 的概念。谁能帮我吗?这与线程和线程文件描述符有什么关系?

提前感谢您的帮助,并愿意接受您推荐的任何资源!

莎拉


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)
    {
...

【问题讨论】:

    标签: multithreading sockets bgp quagga


    【解决方案1】:

    bgp_accept 是一个自调用 (thread_add_read) 函数。(读取 quagga 线程概念不要与 linux 线程概念混淆)。 每次调用 bgp_accept 都会与其他对等方建立 tcp 连接。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多