Lines Matching refs:sock

354 	struct port_sock *sock = __containerof(pi, struct port_sock, input);  in inet_recv()  local
367 sock->parse_ctrl(sock, &msg); in inet_recv()
464 struct port_sock *sock = calloc(1, sizeof(struct port_sock)); in ipv4_create() local
465 if (sock == NULL) in ipv4_create()
468 snmpd_input_init(&sock->input); in ipv4_create()
470 TAILQ_INSERT_HEAD(&port->socks, sock, link); in ipv4_create()
473 (struct sockaddr_in *)&sock->bind_addr; in ipv4_create()
480 sock->port = port; in ipv4_create()
495 struct port_sock *sock = udata; in ipv4_input() local
497 sock->input.peerlen = sizeof(struct sockaddr_in); in ipv4_input()
498 snmpd_input(&sock->input, &sock->port->tport); in ipv4_input()
509 ipv4_activate_sock(struct port_sock *sock) in ipv4_activate_sock() argument
511 if ((sock->input.fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { in ipv4_activate_sock()
517 (const struct sockaddr_in *)&sock->bind_addr; in ipv4_activate_sock()
523 if (setsockopt(sock->input.fd, IPPROTO_IP, IP_RECVDSTADDR, &on, in ipv4_activate_sock()
526 (void)close(sock->input.fd); in ipv4_activate_sock()
527 sock->input.fd = -1; in ipv4_activate_sock()
530 sock->set_ret_source = true; in ipv4_activate_sock()
533 if (bind(sock->input.fd, (const struct sockaddr *)sin, sizeof(*sin))) { in ipv4_activate_sock()
535 (void)close(sock->input.fd); in ipv4_activate_sock()
536 sock->input.fd = -1; in ipv4_activate_sock()
541 (void)close(sock->input.fd); in ipv4_activate_sock()
542 sock->input.fd = -1; in ipv4_activate_sock()
546 if ((sock->input.id = fd_select(sock->input.fd, ipv4_input, in ipv4_activate_sock()
547 sock, NULL)) == NULL) { in ipv4_activate_sock()
548 (void)close(sock->input.fd); in ipv4_activate_sock()
549 sock->input.fd = -1; in ipv4_activate_sock()
552 sock->input.peer = (struct sockaddr *)&sock->ret_dest; in ipv4_activate_sock()
554 sock->parse_ctrl = ipv4_parse_ctrl; in ipv4_activate_sock()
555 sock->setsrc = ipv4_setsrc; in ipv4_activate_sock()
571 struct port_sock *sock = TAILQ_FIRST(&p->socks); in ipv4_activate() local
572 assert(sock); in ipv4_activate()
573 assert(!TAILQ_NEXT(sock, link)); in ipv4_activate()
575 const int ret = ipv4_activate_sock(sock); in ipv4_activate()
590 struct port_sock *sock = TAILQ_FIRST(&p->socks); in ipv4_deactivate() local
591 assert(sock); in ipv4_deactivate()
592 assert(!TAILQ_NEXT(sock, link)); in ipv4_deactivate()
594 snmpd_input_close(&sock->input); in ipv4_deactivate()
609 ipv4_parse_ctrl(struct port_sock *sock, const struct msghdr *msg) in ipv4_parse_ctrl() argument
618 memcpy(&sock->ret_source.a4, CMSG_DATA(cmsg), in ipv4_parse_ctrl()
627 sock->input.priv = 0; in ipv4_parse_ctrl()
628 if (sock->input.cred && cred) in ipv4_parse_ctrl()
630 sock->input.priv = (cred->sc_euid == 0); in ipv4_parse_ctrl()
640 ipv4_setsrc(struct port_sock *sock, struct msghdr *msg, char *cbuf) in ipv4_setsrc() argument
652 memcpy(CMSG_DATA(cmsg), &sock->ret_source.a4, in ipv4_setsrc()
670 struct port_sock *sock = calloc(1, sizeof(struct port_sock)); in ipv6_create_common() local
672 if (sock == NULL) in ipv6_create_common()
675 struct sockaddr_in6 *sin = (struct sockaddr_in6 *)&sock->bind_addr; in ipv6_create_common()
690 free(sock); in ipv6_create_common()
694 sock->port = port; in ipv6_create_common()
696 snmpd_input_init(&sock->input); in ipv6_create_common()
697 TAILQ_INSERT_HEAD(&port->socks, sock, link); in ipv6_create_common()
734 struct port_sock *sock = udata; in ipv6_input() local
736 sock->input.peerlen = sizeof(struct sockaddr_in6); in ipv6_input()
737 snmpd_input(&sock->input, &sock->port->tport); in ipv6_input()
748 ipv6_activate_sock(struct port_sock *sock) in ipv6_activate_sock() argument
750 if ((sock->input.fd = socket(PF_INET6, SOCK_DGRAM, 0)) == -1) { in ipv6_activate_sock()
756 (const struct sockaddr_in6 *)&sock->bind_addr; in ipv6_activate_sock()
762 if (setsockopt(sock->input.fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, in ipv6_activate_sock()
765 (void)close(sock->input.fd); in ipv6_activate_sock()
766 sock->input.fd = -1; in ipv6_activate_sock()
769 sock->set_ret_source = true; in ipv6_activate_sock()
772 if (bind(sock->input.fd, (const struct sockaddr *)sin, sizeof(*sin))) { in ipv6_activate_sock()
774 (void)close(sock->input.fd); in ipv6_activate_sock()
775 sock->input.fd = -1; in ipv6_activate_sock()
782 (void)close(sock->input.fd); in ipv6_activate_sock()
783 sock->input.fd = -1; in ipv6_activate_sock()
786 if ((sock->input.id = fd_select(sock->input.fd, ipv6_input, in ipv6_activate_sock()
787 sock, NULL)) == NULL) { in ipv6_activate_sock()
788 (void)close(sock->input.fd); in ipv6_activate_sock()
789 sock->input.fd = -1; in ipv6_activate_sock()
792 sock->input.peer = (struct sockaddr *)&sock->ret_dest; in ipv6_activate_sock()
794 sock->parse_ctrl = ipv6_parse_ctrl; in ipv6_activate_sock()
795 sock->setsrc = ipv6_setsrc; in ipv6_activate_sock()
810 struct port_sock *sock = TAILQ_FIRST(&p->socks); in ipv6_activate() local
811 assert(sock); in ipv6_activate()
813 const int ret = ipv6_activate_sock(sock); in ipv6_activate()
828 struct port_sock *sock = TAILQ_FIRST(&p->socks); in ipv6_deactivate() local
829 assert(sock); in ipv6_deactivate()
830 assert(!TAILQ_NEXT(sock, link)); in ipv6_deactivate()
832 snmpd_input_close(&sock->input); in ipv6_deactivate()
846 ipv6_parse_ctrl(struct port_sock *sock, const struct msghdr *msg) in ipv6_parse_ctrl() argument
858 sock->ret_source.a6.ipi6_addr = info->ipi6_addr; in ipv6_parse_ctrl()
859 sock->ret_source.a6.ipi6_ifindex = in ipv6_parse_ctrl()
869 sock->input.priv = 0; in ipv6_parse_ctrl()
870 if (sock->input.cred && cred) in ipv6_parse_ctrl()
872 sock->input.priv = (cred->sc_euid == 0); in ipv6_parse_ctrl()
882 ipv6_setsrc(struct port_sock *sock, struct msghdr *msg, char *cbuf) in ipv6_setsrc() argument
894 memcpy(CMSG_DATA(cmsg), &sock->ret_source.a6, in ipv6_setsrc()
992 struct port_sock *sock = calloc(1, sizeof(struct port_sock)); in dns_activate() local
993 if (sock == NULL) in dns_activate()
996 snmpd_input_init(&sock->input); in dns_activate()
997 sock->port = port; in dns_activate()
1002 *(struct sockaddr_in *)&sock->bind_addr = in dns_activate()
1004 ret = ipv4_activate_sock(sock); in dns_activate()
1006 *(struct sockaddr_in6 *)&sock->bind_addr = in dns_activate()
1008 ret = ipv6_activate_sock(sock); in dns_activate()
1012 free(sock); in dns_activate()
1014 TAILQ_INSERT_HEAD(&port->socks, sock, link); in dns_activate()
1033 struct port_sock *sock = TAILQ_FIRST(&port->socks); in dns_deactivate() local
1034 TAILQ_REMOVE(&port->socks, sock, link); in dns_deactivate()
1035 snmpd_input_close(&sock->input); in dns_deactivate()
1036 free(sock); in dns_deactivate()