Exemplo n.º 1
0
bool pim_intfconf_node::fill_defaults() {
	for (pim_property *p = pim_intf_props; p->name; p++)
		instantiate_property_u(p->name, p->value, p->description);

	instantiate_property_b("cisco-old-addrlist", false);

	return m_properties.size() == 15;
}
Exemplo n.º 2
0
linux_unicast_router::linux_unicast_router()
    : rt_bcast_sock("linux netlink routing msgs", this,
                    std::mem_fun(&linux_unicast_router::data_available)) {
    rt_sock = -1;
    rt_nlseq = 0;

    bufferlen = instantiate_property_u("netlink-buffer", 0xffff);
    buffer = 0;

    import_methods(linux_methods);

    filter_protos.insert(RTPROT_KERNEL);

    rt_dumping = false;
}
Exemplo n.º 3
0
bool console_module::check_startup() {
	if (!node::check_startup())
		return false;

	import_methods(console_methods);

	if (!instantiate_property_u("client-timeout", 5))
		return false;

	int one = 1;

#ifndef CONSOLE_NO_TELNET
	int sock = socket(PF_INET6, SOCK_STREAM, 0);
	if (sock < 0)
		return false;

	setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));

	sockaddr_in6 lhaddr;
	memset(&lhaddr, 0, sizeof(lhaddr));

	lhaddr.sin6_family = PF_INET6;
	lhaddr.sin6_addr = in6addr_any;
	lhaddr.sin6_port = ntohs(44510);

	if (bind(sock, (sockaddr *)&lhaddr, sizeof(lhaddr)) < 0) {
		close(sock);
		return false;
	}

	if (listen(sock, 5) < 0) {
		close(sock);
		return false;
	}

	srvsock.register_fd(sock);
#endif

	int unixsock = socket(PF_LOCAL, SOCK_STREAM, 0);
	if (unixsock < 0) {
	} else {
		setsockopt(unixsock, SOL_SOCKET, SO_REUSEADDR,
			   &one, sizeof(one));

		sockaddr_un unlhaddr;
		memset(&unlhaddr, 0, sizeof(unlhaddr));
		unlhaddr.sun_family = PF_LOCAL;
		strcpy(unlhaddr.sun_path, socketPath);

		unlink(socketPath);

		if (bind(unixsock, (sockaddr *)&unlhaddr,
			 sizeof(unlhaddr)) < 0) {
			/* empty */
		} else {
			if (listen(unixsock, 5) < 0) {
				if (should_log(WARNING))
					log().writeline("Failed to listen in UNIX socket.");
			} else {
				unix_srvsock.register_fd(unixsock);
			}
		}
	}

	m_mrd->add_child(this);

	return true;
}