예제 #1
0
/* nodename */
int pr_nodeinfo_nodename(CHECKANDFILL_ARGS)
{
	DEBUG(LOG_DEBUG, "%s()\n", __FUNCTION__);

	if (subject) {
		if (!nodenamelen ||
		    compare_dnsname(subject, subjlen, 
				    nodename, 
				    nodenamelen))
			return 1;
		if (subj_if)
			*subj_if = p->pktinfo.ipi6_ifindex;
	}

	if (reply) {
		uint32_t ttl = 0;

		p->reply.ni_type = ICMP6_NI_REPLY;
		p->reply.ni_code = ICMP6_NI_SUCCESS;
		p->reply.ni_cksum = 0;
		p->reply.ni_qtype = htons(NI_QTYPE_DNSNAME);
		p->reply.ni_flags = 0;

		p->replydatalen = nodenamelen ? sizeof(ttl)+nodenamelen : 0;
		p->replydata = nodenamelen ? ni_malloc(p->replydatalen) : NULL;
		if (p->replydata) {
			memcpy(p->replydata, &ttl, sizeof(ttl));
			memcpy(p->replydata + sizeof(ttl), &nodename, nodenamelen);
		}
	}

	return 0;
}
예제 #2
0
파일: monitor.c 프로젝트: okirch/testbus
	.features		= 0,
	.dbus_name_prefix	= "Monitor",

	.destroy		= ni_testbus_monitor_destroy,
	.free			= ni_testbus_monitor_free,
};

ni_testbus_monitor_t *
ni_testbus_monitor_new(ni_testbus_container_t *parent, const char *name, const char *class, ni_var_array_t *params)
{
	ni_testbus_monitor_t *mon;

	ni_assert(parent);
	ni_assert(ni_testbus_container_has_monitors(parent));

	mon = ni_malloc(sizeof(*mon));
	ni_var_array_copy(&mon->params, params);
	ni_string_dup(&mon->class, class);

	ni_testbus_container_init(&mon->context,
			&ni_testbus_monitor_ops,
			name,
			parent);

	return mon;
}


void
ni_testbus_monitor_destroy(ni_testbus_container_t *container)
{