From 8ee1d22c8d93d0d83a5912780d69d3a32380c770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Wed, 17 May 2023 11:23:25 +0800 Subject: [PATCH] =?UTF-8?q?OCT=201.=20=E4=BF=AE=E6=AD=A3=20DHCP=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=B7=A5=E5=85=B7=E5=8F=91=E9=80=81=E4=B8=8D?= =?UTF-8?q?=E5=B8=A6VLAN=E6=95=B0=E6=8D=AE=E5=8C=85=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=97=AE=E9=A2=98=202.=20=E4=BF=AE=E6=AD=A3=20DHCP=20=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=B7=A5=E5=85=B7=E8=BF=87=E6=BB=A4=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dhcp_tools/uv_rawsocket.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dhcp_tools/uv_rawsocket.c b/dhcp_tools/uv_rawsocket.c index d370ac6..3daf6fa 100644 --- a/dhcp_tools/uv_rawsocket.c +++ b/dhcp_tools/uv_rawsocket.c @@ -30,7 +30,7 @@ static PDHCP_PROTO fill_dhcp_pkg(U8 *pRsp, PDHCP_INFO pInfo) { if (pInfo->vni == 0) { pIp = (struct iphdr *)(pRsp + IP_HDR_OFFSET); - pUdp = (struct udphdr *)(UDP_HDR_OFFSET); + pUdp = (struct udphdr *)(pRsp + UDP_HDR_OFFSET); pDhcp = (PDHCP_PROTO)((U8 *)pRsp + DHCP_OFFSET); pEth->h_proto = htons(ETH_P_IP); } else if (pInfo->vni >= 1 && pInfo->vni <= 4095) { @@ -100,7 +100,7 @@ static U32 dhcp_pkk_checksum(U8 *pRsp, U32 optSize) { switch (get_package_vlan_type(pRsp)) { default: pIp = (struct iphdr *)(pRsp + IP_HDR_OFFSET); - pUdp = (struct udphdr *)(UDP_HDR_OFFSET); + pUdp = (struct udphdr *)(pRsp + UDP_HDR_OFFSET); // 计算包总长度 tolSize = optSize + sizeof(DHCP_PROTO) + DHCP_OFFSET; break; @@ -309,7 +309,7 @@ int dhcp_tools_init_network(const char *pNicName) { return ERR_SUCCESS; } - init_filter("vlan or (udp and dst port 68)"); + init_filter(" (udp and dst port 68) or vlan"); ret = create_udp_raw_socket(g_pNicName); if (ret != ERR_SUCCESS) {