32 static const char dns_tx[] =
"suricata:dns:tx";
47 struct LuaTx *ltx = (
struct LuaTx *)lua_newuserdata(L,
sizeof(*ltx));
53 luaL_getmetatable(L, dns_tx);
54 lua_setmetatable(L, -2);
59 static int LuaDnsTxGetRrname(
lua_State *L)
61 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
66 return SCDnsLuaGetRrname(L,
tx->tx);
71 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
76 return SCDnsLuaGetTxId(L,
tx->tx);
81 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
86 return SCDnsLuaGetRcode(L,
tx->tx);
89 static int LuaDnsTxGetRcodeString(
lua_State *L)
91 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
96 return SCDnsLuaGetRcodeString(L,
tx->tx);
99 static int LuaDnsTxGetRecursionDesired(
lua_State *L)
101 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
106 uint16_t
flags = SCDnsTxGetResponseFlags(
tx->tx);
107 int recursion_desired =
flags & 0x0080 ? 1 : 0;
108 lua_pushboolean(L, recursion_desired);
112 static int LuaDnsTxGetQueries(
lua_State *L)
114 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
119 return SCDnsLuaGetQueryTable(L,
tx->tx);
122 static int LuaDnsTxGetAnswers(
lua_State *L)
124 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
129 return SCDnsLuaGetAnswerTable(L,
tx->tx);
132 static int LuaDnsTxGetAuthorities(
lua_State *L)
134 struct LuaTx *
tx = luaL_testudata(L, 1, dns_tx);
139 return SCDnsLuaGetAuthorityTable(L,
tx->tx);
142 static const struct luaL_Reg txlib[] = {
144 {
"answers", LuaDnsTxGetAnswers },
145 {
"authorities", LuaDnsTxGetAuthorities },
146 {
"queries", LuaDnsTxGetQueries },
147 {
"rcode", LuaDnsTxGetRcode },
148 {
"rcode_string", LuaDnsTxGetRcodeString },
149 {
"recursion_desired", LuaDnsTxGetRecursionDesired },
150 {
"rrname", LuaDnsTxGetRrname },
151 {
"txid", LuaDnsTxGetTxid },
156 static const struct luaL_Reg dnslib[] = {
158 {
"get_tx", LuaDnsGetTx },
165 luaL_newmetatable(L, dns_tx);
166 lua_pushvalue(L, -1);
167 lua_setfield(L, -2,
"__index");
168 luaL_setfuncs(L, txlib, 0);
170 luaL_newlib(L, dnslib);