int ipq_set_mark(const struct ipq_handle *h,ipq_id_t id,unsigned long mark_value) { struct { struct nlmsghdr nlh; ipq_peer_msg_t pm; } req; memset(&req, 0, sizeof(req)); req.nlh.nlmsg_len = NLMSG_LENGTH(sizeof(req)); req.nlh.nlmsg_flags = NLM_F_REQUEST; req.nlh.nlmsg_type = IPQM_MARK; req.nlh.nlmsg_pid = h->local.nl_pid; req.pm.msg.mark.id = id; req.pm.msg.mark.mark_value = mark_value; return ipq_netlink_sendto(h, (void *)&req, req.nlh.nlmsg_len); }
int ipq_set_mode(const struct ipq_handle *h, uint8_t mode, size_t range) { struct { struct nlmsghdr nlh; ipq_peer_msg_t pm; } req; memset(&req, 0, sizeof(req)); req.nlh.nlmsg_len = NLMSG_LENGTH(sizeof(req)); req.nlh.nlmsg_flags = NLM_F_REQUEST; req.nlh.nlmsg_type = IPQM_MODE; req.nlh.nlmsg_pid = h->local.nl_pid; req.pm.msg.mode.value = mode; req.pm.msg.mode.range = range; return ipq_netlink_sendto(h, (void *)&req, req.nlh.nlmsg_len); }