static int logtime_entry_to_userspace(struct log_node *node, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; struct logtime_entry_usr entry_usr; entry_usr.time = node->time; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int init_buffer(struct nl_buffer *buffer, enum parse_section section) { struct request_hdr hdr; __u16 tmp = section; int error; init_request_hdr(&hdr, MODE_PARSE_FILE, OP_ADD); error = nlbuffer_write(buffer, &hdr, sizeof(hdr)); if (error) { log_err("Writing on an empty buffer yielded error %d.", error); return error; } error = nlbuffer_write(buffer, &tmp, sizeof(tmp)); if (error) log_err("Writing on an empty buffer yielded error %d.", error); return error; }
static int eam_entry_to_userspace(struct eam_entry *entry, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; struct eam_entry_usr entry_usr; entry_usr.pref4 = entry->pref4; entry_usr.pref6 = entry->pref6; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int bib_entry_to_userspace(struct bib_entry *entry, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; struct bib_entry_usr entry_usr; entry_usr.addr4 = entry->ipv4; entry_usr.addr6 = entry->ipv6; entry_usr.is_static = entry->is_static; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int buffer_write(struct nl_buffer *buffer, void *payload, size_t payload_len, enum parse_section section) { int error; error = nlbuffer_write(buffer, payload, payload_len); if (!error || error != -ENOSPC) return error; error = nlbuffer_flush(buffer); if (error) return error; error = init_buffer(buffer, section); if (error) return error; return nlbuffer_write(buffer, payload, payload_len); }
static int session_entry_to_userspace(struct session_entry *entry, void *arg) { struct nlcore_buffer *buffer = (struct nlcore_buffer *) arg; struct session_entry_usr entry_usr; unsigned long dying_time; entry_usr.src6 = entry->src6; entry_usr.dst6 = entry->dst6; entry_usr.src4 = entry->src4; entry_usr.dst4 = entry->dst4; entry_usr.state = entry->state; dying_time = entry->update_time + entry->timeout; entry_usr.dying_time = (dying_time > jiffies) ? jiffies_to_msecs(dying_time - jiffies) : 0; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int session_entry_to_userspace(struct session_entry *entry, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; struct session_entry_usr entry_usr; unsigned long dying_time; if (!entry->expirer || !entry->expirer->get_timeout) return -EINVAL; entry_usr.remote6 = entry->remote6; entry_usr.local6 = entry->local6; entry_usr.local4 = entry->local4; entry_usr.remote4 = entry->remote4; entry_usr.state = entry->state; dying_time = entry->update_time + entry->expirer->get_timeout(); entry_usr.dying_time = (dying_time > jiffies) ? jiffies_to_msecs(dying_time - jiffies) : 0; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int session_entry_to_userspace(struct session_entry *entry, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; struct session_entry_usr entry_usr; unsigned long dying_time; int error; error = sessiondb_get_timeout(entry, &dying_time); if (error) return error; dying_time += entry->update_time; entry_usr.remote6 = entry->remote6; entry_usr.local6 = entry->local6; entry_usr.local4 = entry->local4; entry_usr.remote4 = entry->remote4; entry_usr.state = entry->state; entry_usr.dying_time = (dying_time > jiffies) ? jiffies_to_msecs(dying_time - jiffies) : 0; return nlbuffer_write(buffer, &entry_usr, sizeof(entry_usr)); }
static int pool4_to_usr(struct pool4_sample const *sample, void *arg) { return nlbuffer_write(arg, sample, sizeof(*sample)); }
static int eam_entry_to_userspace(struct eamt_entry const *entry, void *arg) { struct nlcore_buffer *buffer = (struct nlcore_buffer *)arg; return nlbuffer_write(buffer, entry, sizeof(*entry)); }
static int pool4_to_usr(struct ipv4_prefix *prefix, void *arg) { return nlbuffer_write(arg, prefix, sizeof(*prefix)); }
static int pool6_entry_to_userspace(struct ipv6_prefix *prefix, void *arg) { struct nl_buffer *buffer = (struct nl_buffer *) arg; return nlbuffer_write(buffer, prefix, sizeof(*prefix)); }