/* 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; }
.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) {