From: Miek Gieben Date: Tue, 23 Aug 2005 10:07:39 +0000 (+0000) Subject: IT's ALIVE - setting id's works and so does interfacing with dig X-Git-Tag: release-1.0.0~261 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fbb53625c23bfaff6cac6103f4fa0c9ae7a7fe07;p=thirdparty%2Fldns.git IT's ALIVE - setting id's works and so does interfacing with dig --- diff --git a/lua/lua-rns.c b/lua/lua-rns.c index 5ca16743..b36b461c 100644 --- a/lua/lua-rns.c +++ b/lua/lua-rns.c @@ -334,7 +334,6 @@ l_read_wire_udp(lua_State *L) if (!pktbuf_raw) { return 0; } - printf("read bytes %d\n", from_size); ldns_buffer_new_frm_data(pktbuf, pktbuf_raw, size); /* push our buffer onto the stack */ @@ -386,6 +385,23 @@ l_pkt_set_qdcount(lua_State *L) return 0; } +static int +l_pkt_id(lua_State *L) +{ + ldns_pkt *p = (ldns_pkt*)lua_touserdata(L, 1); + lua_pushnumber(L, ldns_pkt_id(p)); + return 1; +} + +static int +l_pkt_set_id(lua_State *L) +{ + ldns_pkt *p = (ldns_pkt*)lua_touserdata(L, 1); + uint16_t id = lua_tonumber(L, 2); + ldns_pkt_set_id(p, id); + return 0; +} + /* ============ CONVERSION @@ -530,6 +546,15 @@ register_ldns_functions(void) lua_register(L, "l_pkt_ancount", l_pkt_ancount); lua_register(L, "l_pkt_nscount", l_pkt_nscount); lua_register(L, "l_pkt_nscount", l_pkt_nscount); + lua_register(L, "l_pkt_id", l_pkt_id); + +#if 0 + lua_register(L, "l_pkt_set_qdcount", l_pkt_qdcount); + lua_register(L, "l_pkt_set_ancount", l_pkt_ancount); + lua_register(L, "l_pkt_set_nscount", l_pkt_nscount); + lua_register(L, "l_pkt_set_nscount", l_pkt_nscount); +#endif + lua_register(L, "l_pkt_set_id", l_pkt_set_id); /* CONVERSIONs */ lua_register(L, "l_pkt2string", l_pkt2string); diff --git a/lua/rns-lib.lua b/lua/rns-lib.lua index d225208d..be3e024b 100644 --- a/lua/rns-lib.lua +++ b/lua/rns-lib.lua @@ -36,8 +36,8 @@ LDNS_RDF_TYPE_NSA = 25 LDNS_RDF_TYPE_IPSECKEY = 26 -function lua_debug(msg) - print("[lua]", msg) +function lua_debug(...) + print("[lua]", unpack(arg)) end -- transpose 2 rrs in a pkt -- diff --git a/lua/rns.lua b/lua/rns.lua index 92aca542..90cdebba 100644 --- a/lua/rns.lua +++ b/lua/rns.lua @@ -14,16 +14,6 @@ pkt = l_pkt_push_rr(pkt, LDNS_SECTION_ANSWER, rr4) pkt = l_pkt_push_rr(pkt, LDNS_SECTION_AUTHORITY, rr2) pkt = l_pkt_push_rr(pkt, LDNS_SECTION_AUTHORITY, rr3) -l_pkt_print(pkt) - -lua_reverse_pkt(pkt) - -l_pkt_print(pkt) - ---lua_insert_end_rr(pkt, rr6) -lua_insert_rr(pkt, rr5, 3) -l_pkt_print(pkt) - ---- Setup a server to listen to UDP -- make rdf with an ip rdf_ip = l_rdf_new_frm_str(LDNS_RDF_TYPE_A, "127.0.0.1") @@ -34,24 +24,24 @@ socket = l_server_socket_udp(rdf_ip, 5353) -- in what order wirebuf, sockaddr_from, fromlen = l_read_wire_udp(socket) -print("From len", fromlen) -print("From len", wirebuf) -print("From len", sockaddr_from) - if wirebuf == nil then lua_debug("nothing received") else -- somebody is listening wirepkt = l_buf2pkt(wirebuf) lua_debug("received from the interface") + + id = l_pkt_id(wirepkt); l_pkt_print(wirepkt) + -- set the id on the outgoing packet + l_pkt_set_id(pkt, id) wirebuf2 = l_pkt2buf(pkt) rdf_listen, port_listen = l_sockaddr_storage2rdf(sockaddr_from) bytes = l_write_wire_udp(socket, wirebuf2, rdf_listen, port_listen); - print("wrote bytes", bytes) + lua_debug("wrote bytes", bytes) l_pkt_print(pkt) end diff --git a/lua/test.lua b/lua/test.lua index 48f3a1e9..f08fef28 100644 --- a/lua/test.lua +++ b/lua/test.lua @@ -27,4 +27,6 @@ l_pkt_print(my_pkt) my_rr5 = l_pkt_set_rr(my_pkt, my_rr4, 1) l_rr_print(my_rr5) +l_pkt_set_id(my_pkt, 1505) + l_pkt_print(my_pkt)