[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: IPv6 - DHCPv6 [PATCH]
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2020-06-21 0:57:32
Message-ID: CAK1hOcOfoOT3mG0FW_59rew7R9YWpgDy9iqjLdUbKO0M9TqmKg () mail ! gmail ! com
[Download RAW message or body]
Applied, thanks
On Wed, Jun 10, 2020 at 5:27 PM Uwe Glaeser <uwe.glaeser@dormakaba.com> wrote:
>
> Hi all,
>
>
>
> as Martin suggests, I here have my changes in a way like most Patches are in the \
> mailing list…
> I did not push them to Git because I think I have no rights…The changes cause the \
> multicast message now to be received by the Server. Still the answer seems to have \
> no effect to the dhcpc6,
> perhaps someone has an idea about that…
>
>
>
>
>
> diff --git a/./org/networking/udhcp/common.h b/./new/networking/udhcp/common.h
>
> index bba3d60..f6aeee8 100644
>
> --- a/./org/networking/udhcp/common.h
>
> +++ b/./new/networking/udhcp/common.h
>
> @@ -16,6 +16,7 @@
>
> PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
>
> extern const uint8_t MAC_BCAST_ADDR[6] ALIGN2; /* six all-ones */
>
> +extern const uint8_t MAC_DHCP6MCAST_ADDR[6] ALIGN2; /* IPv6 has new multicast \
> format */
> --------------------------
>
>
>
> diff --git a/./org/networking/udhcp/common.c b/./new/networking/udhcp/common.c
>
> index 62ad248..c19fb65 100644
>
> --- a/./org/networking/udhcp/common.c
>
> +++ b/./new/networking/udhcp/common.c
>
> @@ -14,6 +14,10 @@ const uint8_t MAC_BCAST_ADDR[6] ALIGN2 = {
>
> 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
>
> };
>
> +const uint8_t MAC_DHCP6MCAST_ADDR[6] ALIGN2= {
>
> + 0x33, 0x33, 0x00, 0x01, 0x00, 0x02
>
> +}; /* IPv6 requires different multicast contents in Ethernet Frame (RFC 2464) */
>
> +
>
>
>
> -----------------------------
>
>
>
> diff --git a/./org/networking/udhcp/d6_dhcpc.c b/./new/networking/udhcp/d6_dhcpc.c
>
> index 422b888..4e8adb4 100644
>
> --- a/./org/networking/udhcp/d6_dhcpc.c
>
> +++ b/./new/networking/udhcp/d6_dhcpc.c
>
> @@ -536,10 +536,10 @@ static int d6_mcast_from_client_data_ifindex(struct d6_packet \
> *packet, uint8_t *
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
>
> };
>
> - return d6_send_raw_packet(
>
> - packet, (end - (uint8_t*) packet),
>
> + return d6_send_raw_packet(
>
> + packet, (end - (uint8_t*) packet),
>
> /*src*/ &client6_data.ll_ip6, CLIENT_PORT6,
>
> - /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, \
> MAC_BCAST_ADDR,
> + /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, \
> MAC_DHCP6MCAST_ADDR,
> client_data.ifindex
>
> );
>
>
>
>
>
> I will see if can summarize the problem with the DHCP server on Windows Server2012 \
> and try to attach perhaps some Wireshark logs
>
>
> Uwe
>
>
>
>
>
>
>
> > Hello,
>
> > I have a few notes.
>
> >
>
> > First of all, you should send the diff as a git patch. Not only will it
>
> > make the code much easier to read, but will also make it possible to commit
>
> > into the git repository.
>
> > Also you mentioned that the server still doesn't respond as expected,
>
> > perhaps you could address that too?
>
> >
>
> > Martin
>
> >
>
> > On Tue, 5 May 2020 at 12:29, Uwe Glaeser <uwe.glaeser at dormakaba.com> wrote:
>
> >
>
> > > Hi all,
>
> > >
>
> > >
>
> > >
>
> > > I try to get a IPv6 address via DHCP from a "Windows 2012 R2 Server with
>
> > > DHCPv6 Server".
>
> > >
>
> > > With actual busybox 1.31.1 and enabled IPv6 and udhcpc6 feature I try to
>
> > > make contact to the server.
>
> > >
>
> > > My deivce is an embedded Linux 2.6
>
> > >
>
> > > What is working perfectly well is busybox ping6 and I get an IPv6 address
>
> > > when connecting my PC(Win 10) to the server.
>
> > >
>
> > > I watched the network with Wireshark and found out, that the ping6 and the
>
> > > dhcp-solicit from the PC are transmitted as ipv6-multicast.
>
> > >
>
> > > But the udhcpc6 solicit message is sent as IPv4 broadcast (with
>
> > > FF:FF:FF:FF:FF:FF as destination in the EthernetII frame) which is not
>
> > > correct I think.
>
> > >
>
> > > I have made some changes in the sources that way:
>
> > >
>
> > >
>
> > >
>
> > > I defined the field in common.h/.c for the IPv6 multicast to a DHCPv6
>
> > > (general address is FF02::1:2)
>
> > >
>
> > >
>
> > >
>
> > > const uint8_t MAC_DHCPBCAST_ADDR[6] ALIGN2= {
>
> > >
>
> > > 0x33, 0x33, 0x00, 0x01, 0x00, 0x02
>
> > >
>
> > > };
>
> > >
>
> > >
>
> > >
>
> > > and used it in d6_dhcp.c in the call of:
>
> > >
>
> > >
>
> > >
>
> > > static int d6_mcast_from_client_data_ifindex(struct d6_packet *packet,
>
> > > uint8_t *end)
>
> > >
>
> > > {
>
> > >
>
> > > /* FF02::1:2 is "All_DHCP_Relay_Agents_and_Servers"
>
> > > address */
>
> > >
>
> > > static const uint8_t FF02__1_2[16] = {
>
> > >
>
> > > 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
>
> > > 0x00,
>
> > >
>
> > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
>
> > > 0x02,
>
> > >
>
> > > };
>
> > >
>
> > >
>
> > >
>
> > > return d6_send_raw_packet( packet, (end - (uint8_t*)
>
> > > packet),
>
> > >
>
> > >
>
> > > /*src*/
>
> > > &client6_data.ll_ip6, CLIENT_PORT6,
>
> > >
>
> > >
>
> > > /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, MAC_DHCPBCAST_ADDR,
>
> > >
>
> > >
>
> > > client_data.ifindex
>
> > >
>
> > > );
>
> > >
>
> > > }
>
> > >
>
> > >
>
> > >
>
> > > That works better now and I can see nearly the same contents in Wireshark
>
> > > as in the PC-dhcpv6 request. Ther Server still does not answer but that may
>
> > > have other reasons…
>
> > >
>
> > > I'm not sure if there are other parts where it would make sense to change
>
> > > the header…Please have a look!
>
> > >
>
> > >
>
> > >
>
> > > Best regards!
>
> > >
>
> > >
>
> > >
>
> > > Uwe Glaeser
>
> > > dormakaba EAD GmbH
>
> > > _______________________________________________
>
> > > busybox mailing list
>
> > > busybox at busybox.net
>
> > > http://lists.busybox.net/mailman/listinfo/busybox
>
> > >
>
>
>
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic