12f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/* 22f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * lib/netfilter/log_msg_obj.c Netfilter Log Object 32f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * 42f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * This library is free software; you can redistribute it and/or 52f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * modify it under the terms of the GNU Lesser General Public 62f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * License as published by the Free Software Foundation version 2.1 72f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * of the License. 82f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * 9d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 102f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * Copyright (c) 2007 Philip Craig <philipc@snapgear.com> 112f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * Copyright (c) 2007 Secure Computing Corporation 122f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy */ 132f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 142f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#include <netlink-local.h> 152f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#include <netlink/netfilter/nfnl.h> 162f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#include <netlink/netfilter/netfilter.h> 172f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#include <netlink/netfilter/log_msg.h> 182f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 192f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** @cond SKIP */ 202f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_FAMILY (1UL << 0) 212f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_HWPROTO (1UL << 1) 222f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_HOOK (1UL << 2) 232f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_MARK (1UL << 3) 242f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_TIMESTAMP (1UL << 4) 252f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_INDEV (1UL << 5) 262f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_OUTDEV (1UL << 6) 272f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_PHYSINDEV (1UL << 7) 282f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_PHYSOUTDEV (1UL << 8) 292f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_HWADDR (1UL << 9) 302f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_PAYLOAD (1UL << 10) 312f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_PREFIX (1UL << 11) 322f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_UID (1UL << 12) 332f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_GID (1UL << 13) 342f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_SEQ (1UL << 14) 352f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy#define LOG_MSG_ATTR_SEQ_GLOBAL (1UL << 15) 362f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** @endcond */ 372f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 382f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardystatic void log_msg_free_data(struct nl_object *c) 392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct nfnl_log_msg *msg = (struct nfnl_log_msg *) c; 412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 422f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg == NULL) 432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return; 442f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy free(msg->log_msg_payload); 462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy free(msg->log_msg_prefix); 472f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardystatic int log_msg_clone(struct nl_object *_dst, struct nl_object *_src) 502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 512f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct nfnl_log_msg *dst = (struct nfnl_log_msg *) _dst; 522f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct nfnl_log_msg *src = (struct nfnl_log_msg *) _src; 532f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy int err; 542f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 552f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (src->log_msg_payload) { 562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy err = nfnl_log_msg_set_payload(dst, src->log_msg_payload, 572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy src->log_msg_payload_len); 582f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (err < 0) 592f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy goto errout; 602f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 612f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 622f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (src->log_msg_prefix) { 632f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy err = nfnl_log_msg_set_prefix(dst, src->log_msg_prefix); 642f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (err < 0) 652f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy goto errout; 662f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 672f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 682f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return 0; 692f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyerrout: 702f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return err; 712f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 722f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 73d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Grafstatic void log_msg_dump(struct nl_object *a, struct nl_dump_params *p) 742f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 752f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct nfnl_log_msg *msg = (struct nfnl_log_msg *) a; 762f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy struct nl_cache *link_cache; 772f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy char buf[64]; 782f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 792f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy link_cache = nl_cache_mngt_require("route/link"); 802f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 81d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_new_line(p); 82d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf 832f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_PREFIX) 84d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "%s", msg->log_msg_prefix); 852f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 862f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_INDEV) { 872f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (link_cache) 88d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "IN=%s ", 892f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy rtnl_link_i2name(link_cache, 902f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_indev, 912f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 922f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy else 93d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "IN=%d ", msg->log_msg_indev); 942f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 952f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 962f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_PHYSINDEV) { 972f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (link_cache) 98d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "PHYSIN=%s ", 992f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy rtnl_link_i2name(link_cache, 1002f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_physindev, 1012f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 1022f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy else 103d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "IN=%d ", msg->log_msg_physindev); 1042f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 1052f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1062f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_OUTDEV) { 1072f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (link_cache) 108d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "OUT=%s ", 1092f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy rtnl_link_i2name(link_cache, 1102f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_outdev, 1112f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 1122f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy else 113d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "OUT=%d ", msg->log_msg_outdev); 1142f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 1152f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1162f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_PHYSOUTDEV) { 1172f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (link_cache) 118d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "PHYSOUT=%s ", 1192f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy rtnl_link_i2name(link_cache, 1202f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_physoutdev, 1212f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 1222f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy else 123d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "PHYSOUT=%d ", msg->log_msg_physoutdev); 1242f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 1252f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1262f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_HWADDR) { 1272f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy int i; 1282f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 129d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "MAC"); 1302f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy for (i = 0; i < msg->log_msg_hwaddr_len; i++) 131d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "%c%02x", i?':':'=', msg->log_msg_hwaddr[i]); 132d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, " "); 1332f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 1342f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1352f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy /* FIXME: parse the payload to get iptables LOG compatible format */ 1362f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1372f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_FAMILY) 138d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "FAMILY=%s ", 1392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy nl_af2str(msg->log_msg_family, buf, sizeof(buf))); 1402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_HWPROTO) 142d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "HWPROTO=%s ", 1432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy nl_ether_proto2str(ntohs(msg->log_msg_hwproto), 1442f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 1452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_HOOK) 147d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "HOOK=%s ", 1482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy nfnl_inet_hook2str(msg->log_msg_hook, 1492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy buf, sizeof(buf))); 1502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1512f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_MARK) 152d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "MARK=%u ", msg->log_msg_mark); 1532f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1542f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_PAYLOAD) 155d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "PAYLOADLEN=%d ", msg->log_msg_payload_len); 1562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_UID) 158d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "UID=%u ", msg->log_msg_uid); 1592f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1602f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_GID) 161d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "GID=%u ", msg->log_msg_gid); 1622f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1632f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_SEQ) 164d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "SEQ=%d ", msg->log_msg_seq); 1652f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1662f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_SEQ_GLOBAL) 167d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "SEQGLOBAL=%d ", msg->log_msg_seq_global); 1682f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 169d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf nl_dump(p, "\n"); 1702f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 1712f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1722f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** 1732f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * @name Allocation/Freeing 1742f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * @{ 1752f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy */ 1762f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1772f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardystruct nfnl_log_msg *nfnl_log_msg_alloc(void) 1782f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 1792f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return (struct nfnl_log_msg *) nl_object_alloc(&log_msg_obj_ops); 1802f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 1812f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1822f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_get(struct nfnl_log_msg *msg) 1832f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 1842f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy nl_object_get((struct nl_object *) msg); 1852f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 1862f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1872f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_put(struct nfnl_log_msg *msg) 1882f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 1892f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy nl_object_put((struct nl_object *) msg); 1902f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 1912f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1922f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** @} */ 1932f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1942f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** 1952f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * @name Attributes 1962f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy * @{ 1972f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy */ 1982f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 1992f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_family(struct nfnl_log_msg *msg, uint8_t family) 2002f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2012f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_family = family; 2022f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_FAMILY; 2032f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2042f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2052f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint8_t nfnl_log_msg_get_family(const struct nfnl_log_msg *msg) 2062f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2072f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (msg->ce_mask & LOG_MSG_ATTR_FAMILY) 2082f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_family; 2092f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy else 2102f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return AF_UNSPEC; 2112f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2122f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2132f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_hwproto(struct nfnl_log_msg *msg, uint16_t hwproto) 2142f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2152f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_hwproto = hwproto; 2162f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_HWPROTO; 2172f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2182f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2192f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_hwproto(const struct nfnl_log_msg *msg) 2202f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2212f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_HWPROTO); 2222f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2232f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2242f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint16_t nfnl_log_msg_get_hwproto(const struct nfnl_log_msg *msg) 2252f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2262f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_hwproto; 2272f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2282f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2292f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_hook(struct nfnl_log_msg *msg, uint8_t hook) 2302f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2312f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_hook = hook; 2322f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_HOOK; 2332f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2342f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2352f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_hook(const struct nfnl_log_msg *msg) 2362f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2372f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_HOOK); 2382f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint8_t nfnl_log_msg_get_hook(const struct nfnl_log_msg *msg) 2412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2422f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_hook; 2432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2442f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_mark(struct nfnl_log_msg *msg, uint32_t mark) 2462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2472f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_mark = mark; 2482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_MARK; 2492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2512f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_mark(const struct nfnl_log_msg *msg) 2522f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2532f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_MARK); 2542f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2552f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_mark(const struct nfnl_log_msg *msg) 2572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2582f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_mark; 2592f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2602f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2612f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_timestamp(struct nfnl_log_msg *msg, struct timeval *tv) 2622f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2632f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_timestamp.tv_sec = tv->tv_sec; 2642f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_timestamp.tv_usec = tv->tv_usec; 2652f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_TIMESTAMP; 2662f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2672f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2682f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyconst struct timeval *nfnl_log_msg_get_timestamp(const struct nfnl_log_msg *msg) 2692f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2702f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (!(msg->ce_mask & LOG_MSG_ATTR_TIMESTAMP)) 2712f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return NULL; 2722f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return &msg->log_msg_timestamp; 2732f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2742f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2752f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_indev(struct nfnl_log_msg *msg, uint32_t indev) 2762f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2772f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_indev = indev; 2782f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_INDEV; 2792f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2802f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2812f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_indev(const struct nfnl_log_msg *msg) 2822f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2832f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_indev; 2842f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2852f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2862f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_outdev(struct nfnl_log_msg *msg, uint32_t outdev) 2872f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2882f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_outdev = outdev; 2892f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_OUTDEV; 2902f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2912f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2922f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_outdev(const struct nfnl_log_msg *msg) 2932f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2942f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_outdev; 2952f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 2962f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 2972f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_physindev(struct nfnl_log_msg *msg, uint32_t physindev) 2982f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 2992f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_physindev = physindev; 3002f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_PHYSINDEV; 3012f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3022f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3032f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_physindev(const struct nfnl_log_msg *msg) 3042f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3052f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_physindev; 3062f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3072f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3082f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_physoutdev(struct nfnl_log_msg *msg, uint32_t physoutdev) 3092f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3102f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_physoutdev = physoutdev; 3112f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_PHYSOUTDEV; 3122f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3132f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3142f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_physoutdev(const struct nfnl_log_msg *msg) 3152f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3162f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_physoutdev; 3172f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3182f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3192f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_hwaddr(struct nfnl_log_msg *msg, uint8_t *hwaddr, int len) 3202f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3212f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (len > sizeof(msg->log_msg_hwaddr)) 3222f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy len = sizeof(msg->log_msg_hwaddr); 3232f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_hwaddr_len = len; 3242f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy memcpy(msg->log_msg_hwaddr, hwaddr, len); 3252f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_HWADDR; 3262f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3272f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3282f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyconst uint8_t *nfnl_log_msg_get_hwaddr(const struct nfnl_log_msg *msg, int *len) 3292f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3302f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (!(msg->ce_mask & LOG_MSG_ATTR_HWADDR)) { 3312f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy *len = 0; 3322f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return NULL; 3332f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 3342f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3352f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy *len = msg->log_msg_hwaddr_len; 3362f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_hwaddr; 3372f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3382f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_set_payload(struct nfnl_log_msg *msg, uint8_t *payload, int len) 3402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy free(msg->log_msg_payload); 3422f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_payload = malloc(len); 3432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (!msg->log_msg_payload) 3448a3efffa5b3fde252675239914118664d36a2c24Thomas Graf return -NLE_NOMEM; 3452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy memcpy(msg->log_msg_payload, payload, len); 3472f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_payload_len = len; 3482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_PAYLOAD; 3492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return 0; 3502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3512f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3522f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyconst void *nfnl_log_msg_get_payload(const struct nfnl_log_msg *msg, int *len) 3532f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3542f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (!(msg->ce_mask & LOG_MSG_ATTR_PAYLOAD)) { 3552f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy *len = 0; 3562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return NULL; 3572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy } 3582f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3592f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy *len = msg->log_msg_payload_len; 3602f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_payload; 3612f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3622f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3632f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_set_prefix(struct nfnl_log_msg *msg, void *prefix) 3642f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3652f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy free(msg->log_msg_prefix); 3662f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_prefix = strdup(prefix); 3672f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy if (!msg->log_msg_prefix) 3688a3efffa5b3fde252675239914118664d36a2c24Thomas Graf return -NLE_NOMEM; 3692f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3702f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_PREFIX; 3712f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return 0; 3722f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3732f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3742f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyconst char *nfnl_log_msg_get_prefix(const struct nfnl_log_msg *msg) 3752f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3762f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_prefix; 3772f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3782f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3792f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_uid(struct nfnl_log_msg *msg, uint32_t uid) 3802f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3812f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_uid = uid; 3822f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_UID; 3832f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3842f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3852f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_uid(const struct nfnl_log_msg *msg) 3862f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3872f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_UID); 3882f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3892f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3902f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_uid(const struct nfnl_log_msg *msg) 3912f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3922f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_uid; 3932f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 3942f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 3952f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_gid(struct nfnl_log_msg *msg, uint32_t gid) 3962f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 3972f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_gid = gid; 3982f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_GID; 3992f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4002f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4012f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_gid(const struct nfnl_log_msg *msg) 4022f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4032f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_GID); 4042f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4052f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4062f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_gid(const struct nfnl_log_msg *msg) 4072f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4082f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_gid; 4092f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4102f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4112f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4122f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_seq(struct nfnl_log_msg *msg, uint32_t seq) 4132f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4142f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_seq = seq; 4152f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_SEQ; 4162f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4172f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4182f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_seq(const struct nfnl_log_msg *msg) 4192f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4202f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_SEQ); 4212f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4222f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4232f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_seq(const struct nfnl_log_msg *msg) 4242f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4252f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_seq; 4262f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4272f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4282f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyvoid nfnl_log_msg_set_seq_global(struct nfnl_log_msg *msg, uint32_t seq_global) 4292f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4302f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->log_msg_seq_global = seq_global; 4312f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy msg->ce_mask |= LOG_MSG_ATTR_SEQ_GLOBAL; 4322f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4332f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4342f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyint nfnl_log_msg_test_seq_global(const struct nfnl_log_msg *msg) 4352f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4362f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return !!(msg->ce_mask & LOG_MSG_ATTR_SEQ_GLOBAL); 4372f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4382f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4392f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardyuint32_t nfnl_log_msg_get_seq_global(const struct nfnl_log_msg *msg) 4402f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy{ 4412f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy return msg->log_msg_seq_global; 4422f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy} 4432f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4442f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** @} */ 4452f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4462f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardystruct nl_object_ops log_msg_obj_ops = { 4472f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy .oo_name = "netfilter/log_msg", 4482f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy .oo_size = sizeof(struct nfnl_log_msg), 4492f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy .oo_free_data = log_msg_free_data, 4502f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy .oo_clone = log_msg_clone, 451d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf .oo_dump = { 452d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf [NL_DUMP_LINE] = log_msg_dump, 453d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf [NL_DUMP_DETAILS] = log_msg_dump, 454d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf [NL_DUMP_STATS] = log_msg_dump, 455d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf }, 4562f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy}; 4572f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy 4582f4f8a5094b56c460f4b5bb1b62b7ec8f624942cPatrick McHardy/** @} */ 459