From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server-vie001.gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_ZEN_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=new2025; t=1756454185; bh=FPTAPz5QePM32w91WytVOJRqHmRA8BRzejTuvoMi9vg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Content-Transfer-Encoding:Message-ID:Date:From:Reply-To:Subject:To: Cc:In-Reply-To:References:Resent-Date:Resent-From:Resent-To: Resent-Cc:User-Agent:Content-Type:Content-Transfer-Encoding; b=Vm5nvh8Y5hY6zZSmnCGIO0z4ac0RJjjOvWFahnIF0f2UEs6cNh9AFn51egEc/AUNG RPtqThOxfqjZtWRlMYTPTrj+nxwUc8IgOmm3p1ejqoqz9Xp5eyKd6zCDGLBasC0Sdc he0lBsrD2dzTq7iMqiXrmfttno4cpSnQlWv/L7cbjwJacca1KVznknUgtcxbrqG+YC HYyUSZ0wzV8igrz63ZmlqGOJpCaq9Hnlh7iQunTUfuS/RSy0wpaycoNzpCJP3eSqpi +c48dcCIBhfij6JM3W4jFUOBaxE9IrmmS6j1fkCx2pm/wP3DGsokTmsuqNeT/+B3Lv PrYIbxZ99f00g== Received: from zero (unknown [182.253.228.107]) by server-vie001.gnuweeb.org (Postfix) with ESMTPSA id 611073127F94; Fri, 29 Aug 2025 07:56:23 +0000 (UTC) From: Ahmad Gani To: Ammar Faizi Cc: Ahmad Gani , Alviro Iskandar Setiawan , GNU/Weeb Mailing List Subject: [PATCH gwproxy v8 0/2] Initial work on integration of DNS parser lib in gwproxy Date: Fri, 29 Aug 2025 14:55:52 +0700 Message-ID: <20250829075557.598176-1-reyuki@gnuweeb.org> X-Mailer: git-send-email 2.50.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: [[ resend with minor fix ]] Hi Chief, This is revision v8 of the initial work on the integration of the DNS parser lib in gwproxy. This is an RFC draft; the patches themselves aren't final. There are 2 patches in this series: - refactor gwproxy codebase (specifically, DNS system) - add dns parser code Thanks for taking a look. # Changelog v1 -> v2: - use existing convert_str_to_ssaddr instead of init_addr - fix memory leak when init_addr (now it's replaced) failed - modify convert_str_to_ssaddr to support default port - bring back __cold attribute on convert_ssaddr_to_str - don't fill a dangling pointer as Sir Alviro said - for now it's blocking, attempt_retry label is not needed v2 -> v3: - remove TODO(reyuki): hints->ai_family is used to filter results - make gw_ares_getaddrinfo asynchronous by change UDP socket to non-blocking - move socket creation to library initialization - make UDP socket unconnected - restructure internal struct and program execution flow to support async - update unit test of dns parser - transaction id creation is delegated to caller - fix logic bug in serialize_answ that can lead to memory error: invalid read - rename parameter prt and split commit message - move variable declaration in for loop according to the Sir Alviro coding-style v3 -> v4: - add else block in the convert_str_to_ssaddr function - use format specifier %hu for uint16_t in printf - update base commit to branch master from upstream remote repository v4 -> v5: - squash commits to eliminate changes unrelated to the commit subject - change commit subject: use imperative form for the subject - update base commit to branch master from upstream remote repository - changing the email subject - drop the c-ares style thing - restructure dnsparser.c and dnsparser.h v5 -> v6: - mark this feature as experimental and disabled by default - fix minor issues from master branch - fix dns parser - add dns server as gwproxy' cmdline option - add fallback mechanism for raw dns backend v6 -> v7: - squash commits - refactor gwproxy codebase (specifically, DNS system) - add dns parser code v7 -> v8: - use __sys_close instead of libc's wrapper close - add newline at EoF - fix warning: ‘af’ may be used uninitialized [-Wmaybe-uninitialized] - remove break that occured after goto statement Signed-off-by: Ahmad Gani --- Ahmad Gani (2): dnsparser: Add dns parser code gwproxy: refactor code base to add experimental raw DNS backend Makefile | 2 +- configure | 8 + src/gwproxy/dns.c | 241 +++++++++++++++-- src/gwproxy/dns.h | 29 +- src/gwproxy/dnsparser.c | 581 ++++++++++++++++++++++++++++++++++++++++ src/gwproxy/dnsparser.h | 192 +++++++++++++ src/gwproxy/ev/epoll.c | 67 ++++- src/gwproxy/gwproxy.c | 54 +++- src/gwproxy/gwproxy.h | 5 +- 9 files changed, 1130 insertions(+), 49 deletions(-) create mode 100644 src/gwproxy/dnsparser.c create mode 100644 src/gwproxy/dnsparser.h base-commit: b2a7a2d33ba8676d917fd26fc3a86bdde8961d76 -- Ahmad Gani