Native IPv6 with DHCPv6-PD

I was playing around earlier trying to see if I could get DHCPv6-PD to work with the native ipv6 in my area and haven't had success yet, but wanted to share my progress.
The first problem I encountered was related to the fact that the ONT uses vlan 0 which EdgeMax doesn't like in some areas (e.g. https://community.ubnt.com/t5/EdgeMAX/Virtual-Interface-0-with-DHCP/m-p/1709119). DHCP for IPv4 seems to work with it using what you have here, but the config for the dhcp6c config wasn't being generated for me until I modified the perl module referenced in that article.
After that, I was sending DHCPv6 solicitations, but getting no response. I'm going to see if I can find the DUID that the ATT gateway is using and see if copying that into my router makes a difference.

Yeah, I figured this out earlier today. :-) Thanks for that link. Once I realized EdgeOS wasn't willing to configure dhcp6c on a VLAN, I just ran it manually like so:
sudo dhcp6c -D -f -i eth0.0

That causes dhcp6c to print verbose debugging messages (-D), stay in the foreground (-f) and send only informational requests (-i). That's an easy way to send out requests on VLAN 0 and see if you're getting any response. At least in the Raleigh area, AT&T is still using 6rd and I get no reply.

I just realized you can do this which may work (untested):
set interfaces ethernet eth 0 vif 0 address dhcpv6

I think that will fail if you also have dhcpv6-pd configured on that interface because it automatically does ia-na in that case.

Actually, I take it back. That got a reply and I now have a V6 on eth0.0:
eth0.0       75.60.xx.xx/22                    u/u  WAN VLAN 0
             2001:506:xxxx:xxx::1/64

I'm not sure I care about dhcpv6-pd. I may just manually configure dnsmasq to handle the RA's on my LAN. However, I've only got a /64 on eth0.0. Okay, more experimenting to do. I'll report back here.

The IPv6 address in the DHCPv6 reply is bogus. Or at least, AT&T isn't advertising a route to it AFAICT. Drat. I probably won't play with this anymore for a while. I'll plug my RG in directly to the ONT once a month or so and once it gets a native IPv6 I'll try again.

I'm likely going to have to get a capture between the ONT and the RG to get the DUID, that capture might tell me some other useful things as well. Will update after I've tried that.

Has anyone been able to get native IPv6 going when bypassing with the eap proxy?

Yes, somewhere in the original thread on dslreports (I think) someone posted about it. It requires spoofing the DUID-EN to match the RGs.
I've had my RG in DMZPlus mode the last couple months because I was traveling and didn't want there to be any trouble with my connection while I was away. In the interim, AT&T has upgraded its firmware and moved it from 6rd to native dual-stack. I'll be setting things back up with the proxy and once I have native IPv6 dual-stack working I'll document the setup.

I spent about 7-10 days now trying to get native IPv6 working, here's what I did found/did:

After a few days of trying to get an IPv6 with the wrong DUID and different options, I seem to have broken my config with AT&T to the point where even the Pace 5286ac in the original setup wouldn't get an IPv6 anymore
I changed the edgerouter's DUID later by changing /var/lib/dhcp6c_duid to match the dhcpv6 packets I sniffed from my Pace 5286ac
Manually started dhcp6c as edgeOS wouldn't do that for me as it seems to not automatically start that for VLAN's
I'm getting ICMPv6 neighbor advertisement on eth0.0 which seems to be the next router that I've set as route6 next-hop (fe80::ea4:2ff:fe89:3801 fe80::de7f:xxxx:xxxx:xxxx ICMPv6	Neighbor Advertisement fe80::ea4:2ff:fe89:3801 (rtr, sol, ovr) is at 0c:a4:02:89:39:4b)

My guess would be now that I simply have to wait for a week or two until my IPv6 lease on AT&T's side is up and I'll get a prefix delegated onto eth0.0 through dhcp6c (that I started manually).

Got it working. /var/run/dhcp6c-eth0.0-pd.conf is this:
interface eth0.0 {
	send ia-na 1;
	send ia-pd 1;
};

id-assoc na 1 {};
id-assoc pd 1 {
	prefix ::/60 21600 86400;
	prefix-interface eth1 {
		sla-id 0;
		sla-len 4;
		ifid 1;
	};
};

There's no way to get EdgeOS to write that correctly, so you have to set it up by hand. I was able to get EdgeOS to write a proper /var/lib/dhcpv6/dhcp6c_duid via this option:
set interfaces ethernet eth0 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
That's the DUID for a Pace 5268AC and the xx are the ASCII values (in hex) of its serial number (prefaced by PEN 00:00:0d:e9 and the Pace OUI of 00D09E- which is represented by 30:30:44:30:49:45:25). Here's a bit of Python you could use to convert your S/N into the correct representation using 12345A123456 as an example S/N:
>>> ':'.join('%02x' % ord(c) for c in '12345A123456')
'31:32:33:34:35:41:31:32:33:34:35:36'

I sniffed the values via tcpdump, but confirmed they match the serial number from the router web interface.
Anyway, once I created dhcp6c-eth0.0-pd.conf and confirmed that EdgeOS had written a correct dhcp6c_duid I was able to renew dhcpv6-pd interface eth0.0 and that started dhcp6c correctly and my eth0.0 (WAN) and eth1 (LAN) had correct IPv6 IPs. I have a few other IPv6 related items in my config:
set interfaces ethernet eth1 ipv6 dup-addr-detect-transmits 1
set interfaces ethernet eth1 ipv6 router-advert cur-hop-limit 64
set interfaces ethernet eth1 ipv6 router-advert link-mtu 0
set interfaces ethernet eth1 ipv6 router-advert managed-flag false
set interfaces ethernet eth1 ipv6 router-advert max-interval 600
set interfaces ethernet eth1 ipv6 router-advert other-config-flag false
set interfaces ethernet eth1 ipv6 router-advert reachable-time 0
set interfaces ethernet eth1 ipv6 router-advert retrans-timer 0
set interfaces ethernet eth1 ipv6 router-advert send-advert false
set system offload ipv6 forwarding enable
set system offload ipv6 vlan enable
set service dns forwarding options enable-ra
set service dns forwarding options 'dhcp-range=::1,constructor:eth1,ra-names,86400'

(Don't ask me why I have all those router-advert options... I don't remember and maybe I don't need them. I'm using dnsmasq for my DHCP server, so I have it handling the IPv6 RA as well.)
I also have an IPv6 firewall, but I won't document that here.
It's too bad EdgeOS can't configure dhcp6c correctly. When I have time, I'll add some scripts to this repo to help with the IPv6 setup.

Funny, I got it working yesterday morning too. I had to wait almost two weeks for AT&T to expire my dhcp lease and I was suddenly getting a IPv6.
I did basically the same thing as you did, although, I just generated myself the duid through pfSense and edited the duid on my edgerouter to match. Verified the same thing through tcpdump.
Setting the duid on the edgerouter as you suggested, didn't work for me as the generated DUID was always marked as corrupt as the first half byte was off ( 1900 instead of 0019 ).
pfSense did that right.
Anyways, what I'm wondering is if you did any modification to any perl scripts for your dhcp6c come up and so that renew would work?
I always get DHCPv6 client is not configured on interface eth0.0. as soon as it's concerning a virtual interface.
I also had to set the next-hop/static IPv6 route to actually make IPv6 work

For reference, I created a script that you put in /config/scripts/post-config.d/ and chmod +x here. It fixes the faulty weird endian error for dhcp6c_duid and automates everything else.
https://gist.github.com/jrgutier/283cf1469273b0b3ddcfb781e97be895

The script didn't work for me as the calculation was totally screwed. Imho, your best bet is to use the calculator pfsense has integrated and pulling the config from there yourself.

I just upgraded to a EdgeRouter-4. I had no trouble getting native IPv6 working and I didn't even have to write out a custom dhcp6c-eth0.0-pd.conf this time. The one written by EdgeOS worked fine for me.

BTW, the VLAN 0 bug referenced at the start of this conversation is fixed in EdgeOS v1.10.5.

I just upgraded to a EdgeRouter-4 (I lost my ERL-3 to lighting recently). I had no trouble getting native IPv6 working and I didn't use a custom dhcp6c-eth0.0-pd.conf this time. The one generated by EdgeOS worked fine for me. Relevant config:
set interfaces ethernet eth3 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 host-address '::1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 no-dns
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 prefix-id ':1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 prefix-length 60
set interfaces ethernet eth3 vif 0 dhcpv6-pd prefix-only
set interfaces ethernet eth3 vif 0 dhcpv6-pd rapid-commit disable

I'm not sure the custom DUID is necessary. I think if you're willing to wait 2 weeks for any existing IPv6 lease to time out it will acquire a new lease correctly w/o a custom DUID. That said... I was using the RG for a while my ERL-3 was dead, so it's possible once the existing lease times out that this won't work correctly, but for now it's working.
Disabling rapid-commit and setting prefix-only both seem to be needed.
The VLAN 0 bug referenced at the start of this conversation is fixed in EdgeOS v1.10.5. The script posted above is not necessary. /var/lib/dhcpv6/dhcp6c_duid is written correctly just by setting the duid via the EdgeOS configuration, and with the bug fixed, there's no need to manually start dhcp6c.

Would it be okay to delete the generated DUID file in the dhcp6c folder that was generated from the script?
Thanks,
Jason
Sent from my iPhone

On Jul 26, 2018, at 2:46 PM, Jay Soffian<EMAIL_ADDRESS>wrote:
I just upgraded to a EdgeRouter-4 (I lost my ERL-3 to lighting recently). I had no trouble getting native IPv6 working and I didn't use a custom dhcp6c-eth0.0-pd.conf this time. The one generated by EdgeOS worked fine for me. Relevant config:
set interfaces ethernet eth3 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 host-address '::1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 no-dns
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 prefix-id ':1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 prefix-length 60
set interfaces ethernet eth3 vif 0 dhcpv6-pd prefix-only
set interfaces ethernet eth3 vif 0 dhcpv6-pd rapid-commit disable
I'm not sure the custom DUID is necessary. I think if you're willing to wait 2 weeks for any existing IPv6 lease to time out it will acquire a new lease correctly w/o a custom DUID. That said... I was using the RG for a while my ERL-3 was dead, so it's possible once the existing lease times out that this won't work correctly, but for now it's working.
Disabling rapid-commit and setting prefix-only both seem to be needed.
The VLAN 0 bug referenced at the start of this conversation is fixed in EdgeOS v1.10.5. The script posted above is not necessary. /var/lib/dhcpv6/dhcp6c_duid is written correctly just by setting the duid via the EdgeOS configuration, and with the bug fixed, there's no need to manually start dhcp6c.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

When I had it working with the switch bypass it worked great for me.  Especially streaming video like Netflix.

On Jul 26, 2018, at 4:25 PM, Jay Soffian<EMAIL_ADDRESS>wrote:
I'm not sure IPv6 is worth the trouble on AT&T at this time. I notice when I request an IP address via NA, I get the same IP on my router as the RG gets, but that address is not globally routable, so I can't reach any IPv6 sites from the router itself with NA enabled. For reference, I'm getting this IP assigned to the WAN interface via NA: 2001:506:73d4:67a::1.
When I disable NA (by setting the prefix-only option), I can reach the outside world as the router uses its IPv6 address assigned via PD to the LAN interface. I don't mind sharing that IPv6: 2600:1700:3d40:6300::1/64.
However, IPv6 connections are flaky. I'm seeing all the same symptoms described here:
https://forums.att.com/t5/AT-T-Internet-Equipment/Partial-IPv6-access/td-p/5384167
So I'm probably just going to disable IPv6 till AT&T gets its act together. :-(
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Fixed things by removing the script completely and then deleting the dhcp6c_duid file in var/lib/dhcp6c and then rebooting.  Picked up my global ipv6 right away on eth2.0 and have it working on all my devices.

On Jul 26, 2018, at 7:25 PM, Jay Soffian<EMAIL_ADDRESS>wrote:
@janthony6 the reason you're having trouble with the DUID (I think...) is that the ER-X is little-endian (mipsel) while the ER-Lite and ER4 are big-endian. I don't know what @caffeineflo is running. The EdgeOS script script (/opt/vyatta/sbin/dhcpv6-pd-duid.pl) which writes /var/lib/dhcpv6/dhcp6c_duid properly account for endianess. The script from @jrgutier assumes little-endian so it only works correctly on an ER-X.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

You guys have done some great work on this! I'm using eap_proxy, and have updated to EdgeOS v1.10.5 as above.
I ran:
set interfaces ethernet eth3 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:[redacted]'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 host-address '::1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 no-dns
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 prefix-id ':1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 prefix-length 60
set interfaces ethernet eth3 vif 0 dhcpv6-pd prefix-only
set interfaces ethernet eth3 vif 0 dhcpv6-pd rapid-commit disable

(whilst replacing the duid + ethernet interface names with corresponding names from my side)
And strangely enough now get my prefix delegation assigned to my LAN as expected, but my WAN does not get an address. Has anyone else experienced this?
eth0.0       <IP_ADDRESS>/22                  u/u  WAN VLAN 0
eth1         <IP_ADDRESS>/24                   u/u  AT&T router
eth2         <IP_ADDRESS>/24                    u/u  LAN
             2600:1700:7ec0:XXXX::1/64

@sethwonder yes that's what I describe in
https://github.com/jaysoffian/eap_proxy/issues/3#issuecomment-408265191

My apologies. With some more experimentation I have realized that the IPv6 connectivity for my LAN is working just fine; it's just the edgerouter itself that has no IPV6 connectivity on its WAN interface. I'm not too concerned about that given that the rest is working.
For anyone interested, here is the configuration I ended up with:

set interfaces ethernet eth3 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:[redacted]'
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 interface eth2 host-address '::1'
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 interface eth2 no-dns
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 interface eth2 prefix-id ':1'
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 interface eth2 service slaac # not sure if this is needed but i didnt seem to get IPv6 to my LAN clients without it
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 prefix-length 60
set interfaces ethernet eth0 vif 0 dhcpv6-pd prefix-only
set interfaces ethernet eth0 vif 0 dhcpv6-pd rapid-commit disable

set system offload ipv6 forwarding enable
set system offload ipv6 vlan enable

Huge props again to @jaysoffian for eap_proxy in the first place. I just got my AT&T fiber yesterday and was really bummed about the crummy router situation!

Can someone help me generate a duid for a BGW210-700? I assue that the OUI is different from that of the PACE routers?

@abulgatz My BGW210-700 was 00:02:00:00:0d:e9:30:30:31:45:34:36:2d: + S/N (15 digit) in ASCII hex. You might capture that with tcpdump after enabling IPv6 on BGW210-700.

@abulgatz My BGW210-700 was 00:02:00:00:0d:e9:30:30:31:45:34:36:2d: + S/N (15 digit) in ASCII hex. You might capture that with tcpdump after enabling IPv6 on BGW210-700.

Using your prefix here along with my S/N in hex and instructions from https://github.com/aus/pfatt I was able to get ipv6 working. Thanx for the info!

@sethwonder the reason that your EdgeRouter itself has no IPv6 is because of your set interfaces ethernet eth0 vif 0 dhcpv6-pd prefix-only configuration option. Run delete interfaces ethernet eth0 vif 0 dhcpv6-pd prefix-only, commit and save and your EdgeRouter should now have IPv6 connectivity.
@lizan thanks for the info. Can you tell me how you got this information from tcpdump? And I guess my original AT&T duid expired, because IPv6 is working now without explicitly setting a duid. That doesn't mean I don't want to know how to fix/troubleshoot this in the future though, so I'd like to know your tcpdump setup.
@jaysoffian or anyone else in the group, can you explain why you have no-dns and rapid-commit disable set?
Thanks!

@abulgatz, per @jaysoffian:

I'm not sure the custom DUID is necessary. I think if you're willing to wait 2 weeks for any existing IPv6 lease to time out it will acquire a new lease correctly w/o a custom DUID.

So that might be your case, so I think you can just leave it as is. I did tcpdump to capture all traffic from AT&T Router i.e. tcpdump -s 0 -w file.pcap -i eth2.0 (eth2 is the interface to AT&T router) and analyzed the file with Wireshark.

@sethwonder the reason that your EdgeRouter itself has no IPv6 is because of your set interfaces ethernet eth0 vif 0 dhcpv6-pd prefix-only configuration option. Run delete interfaces ethernet eth0 vif 0 dhcpv6-pd prefix-only, commit and save and your EdgeRouter should now have IPv6 connectivity.

I have the exact same issue that IPv6 isn't working on the EdgeRouter itself, yet, I have never had the prefix-only option set.
My eth0 vif 0 config looks like this
 address dhcp
 description "WAN VLAN 0"
 dhcp-options {
     default-route update
     default-route-distance 210
     name-server update
 }
 dhcpv6-pd {
     pd 1 {
         interface switch0 {
             host-address ::1
             prefix-id :1
             service slaac
         }
         prefix-length /60
     }
     rapid-commit enable
 }
 firewall {
     in {
         ipv6-name WAN6_IN
         name WAN_IN
     }
     local {
         ipv6-name WAN6_LOCAL
         name WAN_LOCAL
     }
 }
 ipv6 {
     address {
         autoconf
     }
     dup-addr-detect-transmits 1
 }
 mac dc:7f:a4:e0:72:a4

Thanks to the commands from sethwonder I got this working without much hassle at all on an ER6P. SLAAC seems to work fine on the Android devices but my server 2019 box isn't picking it up, it works manually though. I know Android doesn't work with anything but SLAAC so does anyone know if there is a way to run both and get the Windows box dynamically picking up an address?

So looking at a tcpdump of my eth0.0, the router is requesting prefix delegation and is receiving "dhcp6 advertise" messages back (which if I understand correctly are the first two steps of the handshake for dhcpv6), but then it just... stops for a while, then repeats.
eth0.0 v6-pd config:
dhcpv6-pd {
    duid 00:02:00:00:0d:e9:30:30:44:30:39:45:2d:[S/N in hex]
    pd 1 {
        interface eth1 {
            host-address ::1
            no-dns
            prefix-id :1
            service slaac
        }
    prefix-length 60
    }
    rapid-commit disable
}

Using tcpdump -i eth0.0 ip6 I see a "dhcp6 solicit" followed immediately by a "dhcp6 advertise", followed by silence for a minute or two, then it repeats.
I've got IPv6 working through HE TunnelBroker, so it's not the worst thing in the world if I can't get this working, but it is frustrating. Any ideas? Running on ER4 v1.10.9 if that makes a difference.

@Code-You-Fools I'll be honest, I'm not running IPv6 at the moment. I got it working on AT&T with both their tunnel, and then native, but every so often I'd have random connectivity/latency issues and I was never sure if it was related to IPv6 or not. So I ended up just disabling it.
Other than the info in this thread I don't have any assistance to offer.

@Code-You-Fools sounds like a firewall issue, do you have it enabled? I needed to add the following to mine for native ipv6 to work.
        rule 30 {
            action accept
            description "Allow ICMPv6"
            log disable
            protocol icmpv6
        }
        rule 40 {
            action accept
            description "Allow DHCPv6"
            destination {
                port dhcpv6-client
            }
            protocol tcp_udp
        }

@cerealcable That worked perfectly, thank you!
For anyone who wants to try getting native IPv6 working, the relevant configuration I used was this (I have a PACE 5268AC):
firewall {
    ipv6-name ipv6-wan-in {
        default-action drop
        description "WAN to LAN"
        rule 1 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 2 {
            action drop
            description "Drop invalid"
            state {
                invalid enable
            }
        }
        rule 3 {
            action accept
            description "Allow ICMPv6"
            protocol icmpv6
        }
    }
    ipv6-name ipv6-wan-local {
        default-action drop
        description "WAN to router"
        rule 1 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 2 {
            action drop
            description "Drop invalid"
            state {
                invalid enable
            }
        }
        rule 3 {
            action accept
            description "Allow ICMPv6"
            protocol icmpv6
        }
        rule 4 {
            action accept
            description "Allow DHCPv6"
            destination {
                port dhcpv6-client
            }
            protocol tcp_udp
        }
    }
}
interfaces {
    ethernet eth0 {
        description WAN
        duplex auto
        firewall {
            in {
                ipv6-name ipv6-wan-in
                name wan-in
            }
            local {
                ipv6-name ipv6-wan-local
                name wan-local
            }
        }
        speed auto
        vif 0 {
            description "WAN VLAN 0"
            dhcp-options {
                default-route update
                default-route-distance 210
                name-server update
            }
            dhcpv6-pd {
                duid 00:02:00:00:0d:e9:30:30:44:30:39:45:2d:[S/N converted from ASCII to hex]
                pd 1 {
                    interface eth1 {
                        host-address ::1
                        no-dns
                        prefix-id :1
                        service slaac
                    }
                    prefix-length 60
                }
                rapid-commit disable
            }
            firewall {
                in {
                    ipv6-name ipv6-wan-in
                    name wan-in
                }
                local {
                    ipv6-name ipv6-wan-local
                    name wan-local
                }
            }
        }
    }
    ethernet eth1 {
        address <IP_ADDRESS>/24
        description LAN
        duplex auto
        speed auto
    }
    ethernet eth2 {
        description "AT&T Router"
        duplex auto
        speed auto
    }
}

If you have a BGW210-700, replace the duid prefix with 00:02:00:00:0d:e9:30:30:31:45:34:36:2d:.
Only problem is that the router itself doesn't have IPv6 access for some reason, but the LAN clients do, so it isn't a big deal.

The router doesn't have ipv6 access because the /128 given via DHCP from
AT&T Fiber for some reason comes from a block they have assigned from ARIN
but do not advertise. I have no idea why they do this, but that's the
problem.
On Thu, Jun 27, 2019, 5:21 PM Michael<EMAIL_ADDRESS>wrote:

@cerealcable https://github.com/cerealcable That worked perfectly,
thank you!
For anyone who wants to try getting native IPv6 working, the relevant
configuration I used was this (I have a PACE 5268AC):
firewall {
ipv6-name ipv6-wan-in {
default-action drop
description "WAN to LAN"
rule 1 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 2 {
action drop
description "Drop invalid"
state {
invalid enable
}
}
rule 3 {
action accept
description "Allow ICMPv6"
protocol icmpv6
}
}
ipv6-name ipv6-wan-local {
default-action drop
description "WAN to router"
rule 1 {
action accept
description "Allow established/related"
state {
established enable
related enable
}
}
rule 2 {
action drop
description "Drop invalid"
state {
invalid enable
}
}
rule 3 {
action accept
description "Allow ICMPv6"
protocol icmpv6
}
rule 4 {
action accept
description "Allow DHCPv6"
destination {
port dhcpv6-client
}
protocol tcp_udp
}
}
}
interfaces {
ethernet eth0 {
description WAN
duplex auto
firewall {
in {
ipv6-name ipv6-wan-in
name wan-in
}
local {
ipv6-name ipv6-wan-local
name wan-local
}
}
speed auto
vif 0 {
description "WAN VLAN 0"
dhcp-options {
default-route update
default-route-distance 210
name-server update
}
dhcpv6-pd {
duid 00:02:00:00:0d:e9:30:30:44:30:39:45:2d:[S/N converted from ASCII to hex]
pd 1 {
interface eth1 {
host-address ::1
no-dns
prefix-id :1
service slaac
}
prefix-length 60
}
rapid-commit disable
}
firewall {
in {
ipv6-name ipv6-wan-in
name wan-in
}
local {
ipv6-name ipv6-wan-local
name wan-local
}
}
}
}
ethernet eth1 {
address <IP_ADDRESS>/24
description LAN
duplex auto
speed auto
}
ethernet eth2 {
description "AT&T Router"
duplex auto
speed auto
}
}
If you have a BGW210-700, replace the duid prefix with
00:02:00:00:0d:e9:30:30:31:45:34:36:2d:.
Only problem is that the router itself doesn't have IPv6 access for some
reason, but the LAN clients do, so it isn't a big deal.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jaysoffian/eap_proxy/issues/3?email_source=notifications&email_token=AAEL4Y6USIZZDU42SQY4O6TP4U4PHA5CNFSM4D23NGEKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYYRE5Q#issuecomment-506532470,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEL4Y5IJTNEJX4J23542GDP4U4PHANCNFSM4D23NGEA
.

@cerealcable so is there any way to get the router IPv6 access?

I assigned a /64 out of the PD block to my loopback, worked fine for enabling remote IPv6 access, however lots of services aren't able to specify a source interface and that causes some issues, so I'd say its not completely possible, but you could get something working.

Anyone got IPv6 working and can reproduce it? I've followed every comment through this thread and had no luck.

IPv6 is working correctly for me. My configuration is similar to above. Relevant IPv6 portions:
set firewall ipv6-name WAN6_IN default-action drop
set firewall ipv6-name WAN6_IN description 'WAN to internal'
set firewall ipv6-name WAN6_IN enable-default-log
set firewall ipv6-name WAN6_IN rule 10 action accept
set firewall ipv6-name WAN6_IN rule 10 description 'Allow established/related'
set firewall ipv6-name WAN6_IN rule 10 state established enable
set firewall ipv6-name WAN6_IN rule 10 state related enable
set firewall ipv6-name WAN6_IN rule 20 action drop
set firewall ipv6-name WAN6_IN rule 20 description 'Drop invalid state'
set firewall ipv6-name WAN6_IN rule 20 log enable
set firewall ipv6-name WAN6_IN rule 20 state invalid enable
set firewall ipv6-name WAN6_IN rule 30 action accept
set firewall ipv6-name WAN6_IN rule 30 description 'Allow ICMPv6 destination-unreachable'
set firewall ipv6-name WAN6_IN rule 30 icmpv6 type destination-unreachable
set firewall ipv6-name WAN6_IN rule 30 protocol icmpv6
set firewall ipv6-name WAN6_IN rule 31 action accept
set firewall ipv6-name WAN6_IN rule 31 description 'Allow ICMPv6 packet-too-big'
set firewall ipv6-name WAN6_IN rule 31 icmpv6 type packet-too-big
set firewall ipv6-name WAN6_IN rule 31 protocol icmpv6
set firewall ipv6-name WAN6_IN rule 32 action accept
set firewall ipv6-name WAN6_IN rule 32 description 'Allow ICMPv6 time-exceeded'
set firewall ipv6-name WAN6_IN rule 32 icmpv6 type time-exceeded
set firewall ipv6-name WAN6_IN rule 32 protocol icmpv6
set firewall ipv6-name WAN6_IN rule 33 action accept
set firewall ipv6-name WAN6_IN rule 33 description 'Allow ICMPv6 parameter-problem'
set firewall ipv6-name WAN6_IN rule 33 icmpv6 type parameter-problem
set firewall ipv6-name WAN6_IN rule 33 protocol icmpv6
set firewall ipv6-name WAN6_IN rule 34 action accept
set firewall ipv6-name WAN6_IN rule 34 description 'Allow ICMPv6 echo-request'
set firewall ipv6-name WAN6_IN rule 34 icmpv6 type echo-request
set firewall ipv6-name WAN6_IN rule 34 limit burst 1
set firewall ipv6-name WAN6_IN rule 34 limit rate 600/minute
set firewall ipv6-name WAN6_IN rule 34 protocol icmpv6
set firewall ipv6-name WAN6_IN rule 35 action accept
set firewall ipv6-name WAN6_IN rule 35 description 'Allow ICMPv6 echo-reply'
set firewall ipv6-name WAN6_IN rule 35 icmpv6 type echo-reply
set firewall ipv6-name WAN6_IN rule 35 limit burst 1
set firewall ipv6-name WAN6_IN rule 35 limit rate 600/minute
set firewall ipv6-name WAN6_IN rule 35 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL default-action drop
set firewall ipv6-name WAN6_LOCAL description 'WAN to router'
set firewall ipv6-name WAN6_LOCAL enable-default-log
set firewall ipv6-name WAN6_LOCAL rule 10 action accept
set firewall ipv6-name WAN6_LOCAL rule 10 description 'Allow established/related'
set firewall ipv6-name WAN6_LOCAL rule 10 state established enable
set firewall ipv6-name WAN6_LOCAL rule 10 state related enable
set firewall ipv6-name WAN6_LOCAL rule 20 action drop
set firewall ipv6-name WAN6_LOCAL rule 20 description 'Drop invalid state'
set firewall ipv6-name WAN6_LOCAL rule 20 state invalid enable
set firewall ipv6-name WAN6_LOCAL rule 30 action accept
set firewall ipv6-name WAN6_LOCAL rule 30 description 'Allow ICMPv6 destination-unreachable'
set firewall ipv6-name WAN6_LOCAL rule 30 icmpv6 type destination-unreachable
set firewall ipv6-name WAN6_LOCAL rule 30 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 31 action accept
set firewall ipv6-name WAN6_LOCAL rule 31 description 'Allow ICMPv6 packet-too-big'
set firewall ipv6-name WAN6_LOCAL rule 31 icmpv6 type packet-too-big
set firewall ipv6-name WAN6_LOCAL rule 31 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 32 action accept
set firewall ipv6-name WAN6_LOCAL rule 32 description 'Allow ICMPv6 time-exceeded'
set firewall ipv6-name WAN6_LOCAL rule 32 icmpv6 type time-exceeded
set firewall ipv6-name WAN6_LOCAL rule 32 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 33 action accept
set firewall ipv6-name WAN6_LOCAL rule 33 description 'Allow ICMPv6 parameter-problem'
set firewall ipv6-name WAN6_LOCAL rule 33 icmpv6 type parameter-problem
set firewall ipv6-name WAN6_LOCAL rule 33 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 34 action accept
set firewall ipv6-name WAN6_LOCAL rule 34 description 'Allow ICMPv6 echo-request'
set firewall ipv6-name WAN6_LOCAL rule 34 icmpv6 type echo-request
set firewall ipv6-name WAN6_LOCAL rule 34 limit burst 5
set firewall ipv6-name WAN6_LOCAL rule 34 limit rate 5/second
set firewall ipv6-name WAN6_LOCAL rule 34 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 35 action accept
set firewall ipv6-name WAN6_LOCAL rule 35 description 'Allow ICMPv6 echo-reply'
set firewall ipv6-name WAN6_LOCAL rule 35 icmpv6 type echo-reply
set firewall ipv6-name WAN6_LOCAL rule 35 limit burst 5
set firewall ipv6-name WAN6_LOCAL rule 35 limit rate 5/second
set firewall ipv6-name WAN6_LOCAL rule 35 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 36 action accept
set firewall ipv6-name WAN6_LOCAL rule 36 description 'Allow ICMPv6 Router Advertisement'
set firewall ipv6-name WAN6_LOCAL rule 36 icmpv6 type router-advertisement
set firewall ipv6-name WAN6_LOCAL rule 36 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 37 action accept
set firewall ipv6-name WAN6_LOCAL rule 37 description 'Allow ICMPv6 Neighbor Solicitation'
set firewall ipv6-name WAN6_LOCAL rule 37 icmpv6 type neighbor-solicitation
set firewall ipv6-name WAN6_LOCAL rule 37 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 38 action accept
set firewall ipv6-name WAN6_LOCAL rule 38 description 'Allow ICMPv6 Neighbor Advertisement'
set firewall ipv6-name WAN6_LOCAL rule 38 icmpv6 type neighbor-advertisement
set firewall ipv6-name WAN6_LOCAL rule 38 protocol icmpv6
set firewall ipv6-name WAN6_LOCAL rule 50 action accept
set firewall ipv6-name WAN6_LOCAL rule 50 description 'Allow DHCPv6'
set firewall ipv6-name WAN6_LOCAL rule 50 destination port 546
set firewall ipv6-name WAN6_LOCAL rule 50 protocol udp
set firewall ipv6-name WAN6_LOCAL rule 50 source port 547
set firewall ipv6-receive-redirects disable
set firewall ipv6-src-route disable
set interfaces ethernet eth3 vif 0 dhcpv6-pd duid '00:02:00:00:0d:e9:30:30:44:30:39:45:2d:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX' <--- see https://github.com/jaysoffian/eap_proxy/issues/3#issuecomment-371012033 for how to get this
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 host-address '::1'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 no-dns
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 interface eth1 prefix-id ':0'
set interfaces ethernet eth3 vif 0 dhcpv6-pd pd 1 prefix-length 60
set interfaces ethernet eth3 vif 0 dhcpv6-pd prefix-only
set interfaces ethernet eth3 vif 0 dhcpv6-pd rapid-commit disable
set interfaces ethernet eth3 vif 0 firewall in ipv6-name WAN6_IN
set interfaces ethernet eth3 vif 0 firewall local ipv6-name WAN6_LOCAL
set interfaces ethernet eth3 vif 0 ipv6 dup-addr-detect-transmits 1
set service dns forwarding options enable-ra
set service dns forwarding options 'dhcp-range=::1,constructor:eth1,ra-names,86400'
set system offload ipv6 forwarding enable
set system offload ipv6 vlan enable

eth1 is LAN, eth3 is the ONT (WAN) port. I'm using dnsmasq for handling RA on the LAN port. The router does not have an IPv6 address on its WAN port, only on its LAN port. This works fine. The dhcpv6 client ends up with this config:
$ cat  /var/run/dhcp6c-eth3.0-pd.conf
# This file was auto-generated by /opt/vyatta/sbin/dhcpv6-pd-client.pl
# configuration sub-system.  Do not edit it.

interface eth3.0 {
	request domain-name-servers, domain-name;
	send ia-pd 1;
	script "/opt/vyatta/sbin/ubnt-dhcp6c-script";
};

id-assoc pd 1 {
	prefix ::/60 infinity;
	prefix-interface eth1 {
		sla-id 0;
		sla-len 4;
		ifid 1;
	};
};

@Farjad The relevant parts of my current config:
firewall {
    ipv6-name ipv6-wan-in {
        default-action drop
        description "WAN to LAN"
        rule 1 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 2 {
            action drop
            description "Drop invalid"
            state {
                invalid enable
            }
        }
        rule 3 {
            action accept
            description "Allow ICMPv6"
            protocol icmpv6
        }
    }
    ipv6-name ipv6-wan-local {
        default-action drop
        description "WAN to router"
        rule 1 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 2 {
            action drop
            description "Drop invalid"
            state {
                invalid enable
            }
        }
        rule 3 {
            action accept
            description "Allow DHCPv6"
            destination {
                port dhcpv6-client
            }
        }
        rule 4 {
            action accept
            description "Allow ICMPv6"
            protocol icmpv6
        }
    }
}
interfaces {
    ethernet [WAN_IF] {
        description WAN
        vif 0 {
            description "WAN VLAN 0"
            dhcpv6-pd {
                duid [YOUR_DUID]
                pd 1 {
                    interface [LAN_IF] {
                        host-address ::1
                        no-dns
                        prefix-id :1
                        service slaac
                    }
                    prefix-length 60
                }
            }
            firewall {
                in {
                    ipv6-name ipv6-wan-in
                }
                local {
                    ipv6-name ipv6-wan-local
                }
            }
        }
    }
}
service {
    nat {
        rule 1 {
            description "Masquerade for WAN"
            outbound-interface [WAN_IF].0
            protocol all
            type masquerade
        }
    }
}

[WAN_IF] and [LAN_IF] should be self-explanatory - just replace them with whatever interface is hooked up to the WAN or LAN respectively.
[YOUR_DUID] is calculated from the serial number on your AT&T router, and the steps are given here.
In ipv6-wan-local, rules 3 and 4 are non-negotiable. In ipv6-wan-in, rule 3 is optional - I didn't run into any problems without it, although YMMV.
Of note is the fact that your router will not have IPv6 access. To test your config you will need a PC behind the EdgeRouter. If you're using any apt repositories, you'll want to run sudo mkdir -p /opt/vyatta/etc/apt/apt.conf.d/ && echo 'Acquire::ForceIPv4 "true";' | sudo tee /opt/vyatta/etc/apt/apt.conf.d/99forceipv4.
Obviously, this is not a complete, plug-and-play configuration. I have no idea what would happen if someone decided to use it as such, but I take no responsibility for the results.

Of note is the fact that your router will not have IPv6 access

I don't find that to be the case:
$ curl ifconfig.io; curl -4 ifconfig.io; show interfaces
2600:1700:3d40:6300::1
<IP_ADDRESS>
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         -                                 u/u  RG (inside)
eth1         <IP_ADDRESS>/24                    u/u  LAN
             2600:1700:3d40:6300::1/64
eth2         -                                 u/u  RG (outside)
eth3         -                                 u/u  ONT
eth3.0       <IP_ADDRESS>/22                    u/u  ONT VLAN 0
lo           <IP_ADDRESS>/8                       u/u
             ::1/128

@jaysoffian
So this is my config after following your instructions:
firewall {
    all-ping enable
    broadcast-ping disable
    ipv6-name WAN6_IN {
        default-action drop
        description "WAN to internal"
        enable-default-log
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            log enable
            state {
                invalid enable
            }
        }
        rule 30 {
            action accept
            description "Allow ICMPv6 destination-unreachable"
            icmpv6 {
                type destination-unreachable
            }
            protocol icmpv6
        }
        rule 31 {
            action accept
            description "Allow ICMPv6 packet-too-big"
            icmpv6 {
                type packet-too-big
            }
            protocol icmpv6
        }
        rule 32 {
            action accept
            description "Allow ICMPv6 time-exceeded"
            icmpv6 {
                type time-exceeded
            }
            protocol icmpv6
        }
        rule 33 {
            action accept
            description "Allow ICMPv6 parameter-problem"
            icmpv6 {
                type parameter-problem
            }
            protocol icmpv6
        }
        rule 34 {
            action accept
            description "Allow ICMPv6 echo-request"
            icmpv6 {
                type echo-request
            }
            limit {
                burst 1
                rate 600/minute
            }
            protocol icmpv6
        }
        rule 35 {
            action accept
            description "Allow ICMPv6 echo-reply"
            icmpv6 {
                type echo-reply
            }
            limit {
                burst 1
                rate 600/minute
            }
            protocol icmpv6
        }
    }
    ipv6-name WAN6_LOCAL {
        default-action drop
        description "WAN to router"
        enable-default-log
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
        rule 30 {
            action accept
            description "Allow ICMPv6 destination-unreachable"
            icmpv6 {
                type destination-unreachable
            }
            protocol icmpv6
        }
        rule 31 {
            action accept
            description "Allow ICMPv6 packet-too-big"
            icmpv6 {
                type packet-too-big
            }
            protocol icmpv6
        }
        rule 32 {
            action accept
            description "Allow ICMPv6 time-exceeded"
            icmpv6 {
                type time-exceeded
            }
            protocol icmpv6
        }
        rule 33 {
            action accept
            description "Allow ICMPv6 parameter-problem"
            icmpv6 {
                type parameter-problem
            }
            protocol icmpv6
        }
        rule 34 {
            action accept
            description "Allow ICMPv6 echo-request"
            icmpv6 {
                type echo-request
            }
            limit {
                burst 5
                rate 5/second
            }
            protocol icmpv6
        }
        rule 35 {
            action accept
            description "Allow ICMPv6 echo-reply"
            icmpv6 {
                type echo-reply
            }
            limit {
                burst 5
                rate 5/second
            }
            protocol icmpv6
        }
        rule 36 {
            action accept
            description "Allow ICMPv6 Router Advertisement"
            icmpv6 {
                type router-advertisement
            }
            protocol icmpv6
        }
        rule 37 {
            action accept
            description "Allow ICMPv6 Neighbor Solicitation"
            icmpv6 {
                type neighbor-solicitation
            }
            protocol icmpv6
        }
        rule 38 {
            action accept
            description "Allow ICMPv6 Neighbor Advertisement"
            icmpv6 {
                type neighbor-advertisement
            }
            protocol icmpv6
        }
        rule 50 {
            action accept
            description "Allow DHCPv6"
            destination {
                port 546
            }
            protocol udp
            source {
                port 547
            }
        }
    }
    ipv6-receive-redirects disable
    ipv6-src-route disable
    ip-src-route disable
    log-martians enable
    name WAN_IN {
        default-action drop
        description "WAN to internal"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    name WAN_LOCAL {
        default-action drop
        description "WAN to router"
        rule 10 {
            action accept
            description "Allow established/related"
            state {
                established enable
                related enable
            }
        }
        rule 20 {
            action drop
            description "Drop invalid state"
            state {
                invalid enable
            }
        }
    }
    receive-redirects disable
    send-redirects enable
    source-validation disable
    syn-cookies enable
}
interfaces {
    ethernet eth0 {
        address dhcp
        description WAN
        duplex auto
        firewall {
            in {
                name WAN_IN
            }
            local {
                name WAN_LOCAL
            }
        }
        speed auto
        vif 0 {
            address dhcp
            description "WAN VLAN 0"
            dhcp-options {
                default-route update
                default-route-distance 210
                name-server update
            }
            dhcpv6-pd {
                duid xxxxx
                pd 1 {
                    interface eth1 {
                        host-address ::1
                        no-dns
                        prefix-id :0
                    }
                    prefix-length 60
                }
                prefix-only
                rapid-commit disable
            }
            firewall {
                in {
                    ipv6-name WAN6_IN
                    name WAN_IN
                }
                local {
                    ipv6-name WAN6_LOCAL
                    name WAN_LOCAL
                }
            }
            ipv6 {
                dup-addr-detect-transmits 1
            }
            mac xxxxxx
        }
    }
    ethernet eth1 {
        address <IP_ADDRESS>/24
        description LAN
        duplex auto
        speed auto
    }
    ethernet eth2 {
        address <IP_ADDRESS>/24
        description "AT&T router"
        duplex auto
        speed auto
    }
    ethernet eth3 {
        duplex auto
        speed auto
    }
    loopback lo {
    }
}
port-forward {
    auto-firewall enable
    hairpin-nat enable
    lan-interface eth2
    lan-interface eth1
    wan-interface eth0.0
}
service {
    dhcp-server {
        disabled false
        hostfile-update disable
        shared-network-name LAN1 {
            authoritative enable
            subnet <IP_ADDRESS>/24 {
                default-router <IP_ADDRESS>
                dns-server <IP_ADDRESS>
                domain-name ubnt.local
                lease 86400
                start <IP_ADDRESS> {
                    stop <IP_ADDRESS>
                }
            }
        }
        shared-network-name LAN2 {
            authoritative enable
            subnet <IP_ADDRESS>/24 {
                default-router <IP_ADDRESS>
                dns-server <IP_ADDRESS>
                lease 86400
                start <IP_ADDRESS> {
                    stop <IP_ADDRESS>
                }
            }
        }
        use-dnsmasq enable
    }
    dns {
        forwarding {
            cache-size 150
            listen-on eth1
            listen-on eth2
            name-server <IP_ADDRESS>
            options enable-ra
            options dhcp-range=::1,constructor:eth1,ra-names,86400
        }
    }
    gui {
        http-port 80
        https-port 443
        older-ciphers enable
    }
    nat {
        rule 5010 {
            description "masquerade for WAN"
            outbound-interface eth0.0
            protocol all
            type masquerade
        }
    }
    ssh {
        port 22
        protocol-version v2
    }
    unms {
        disable
    }
}
system {
    name-server <IP_ADDRESS>
    ntp {
        server 0.ubnt.pool.ntp.org {
        }
        server 1.ubnt.pool.ntp.org {
        }
        server 2.ubnt.pool.ntp.org {
        }
        server 3.ubnt.pool.ntp.org {
        }
    }
    offload {
        hwnat disable
        ipv4 {
            vlan enable
        }
        ipv6 {
            forwarding enable
            vlan enable
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}

Still no dice though!
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         -                                 u/u  WAN
eth0.0       xxxxx/22                  u/u  WAN VLAN 0
eth1         <IP_ADDRESS>/24                    u/u  LAN
eth2         <IP_ADDRESS>/24                    u/u  AT&T router
eth3         -                                 u/D
lo           <IP_ADDRESS>/8                       u/u
             ::1/128

And:
$ /opt/vyatta/sbin/dhcpv6-pd-client.pl --ifname=eth0 --renew
DHCPv6 client is not configured on interface eth0.

So I created /var/run/dhcp6c-eth0.0-pd.conf
And it is definitely working now.
Thanks @jaysoffian and @Code-You-Fools

So I restarted my router a few times and it ends up auto-deleting /var/run/dhcp6c-eth0.0-pd.conf
So I imagine there's some setting to automatically run it..

@Farjad You shouldn't manually create /var/run/dhcp6c-eth0.0-pd.conf, the config should let your device (mine is USG) create it.
My related config from show interfaces ethernet [WAN_IF] vif 0:
 address dhcp
 description WAN
 dhcp-options {
     client-option "retry 60;"
     default-route-distance 1
     name-server no-update
 }
 dhcpv6-pd {
     duid [YOUR DUID]
     no-dns
     pd 0 {
         interface [LAN_IF] {
             prefix-id 2
         }
         prefix-length 60
     }
     prefix-only
     rapid-commit enable
 }
 firewall {
     in {
         ipv6-name WANv6_IN
         name WAN_IN
     }
     local {
         ipv6-name WANv6_LOCAL
         name WAN_LOCAL
     }
     out {
         ipv6-name WANv6_OUT
         name WAN_OUT
     }
 }
 mac [YOUR ATT GATEWAY MAC]

After pushing this config, the following content are created automatically at /var/run/dhcp6c-eth0.0-pd.conf:
# This file was auto-generated by /opt/vyatta/sbin/dhcpv6-pd-client.pl
# configuration sub-system.  Do not edit it.

interface eth0.0 {
        request domain-name-servers, domain-name;
        send rapid-commit;
        send ia-pd 0;
        script "/opt/vyatta/sbin/ubnt-dhcp6c-script";
};

id-assoc pd 0 {
        prefix ::/60 infinity;
        prefix-interface [LAN_IF] {
                sla-id 2;
                sla-len 4;
        };
};

So everything I've tried in my /config/config.boot from suggestions in this thread, none of them automatically generate the /var/run/dhcp6c-eth0.0-pd.conf ...but as soon as I manually created it and renewed the ipv6 stuff, it worked.

@Farjad you don't need to create that file manually. It's created automatically per the comment at the top of the file. I only shared mine as an example of what it looks like. The relevant settings which create that file are the dhcpv6-pd lines in the config. Perhaps you should ask on the Ubiquity forums as this is not related to eap_proxy.

So I upgraded my firmware (might have been the reason), now my /var/run/dhcp6c-eth0.0-pd.conf has the auto-generated comment.
Thanks for all your help guys!

A small update: I setup a fresh config using @jaysoffian's config but with only one change:
set interfaces ethernet eth0 vif 0 dhcpv6-pd pd 1 interface eth1 service slaac
Without this option, I was not able to get ipv6 going.
Note that previously, our BGW210 grabbed two /64's; one it held onto and one it passed to our network (I had the modem setup in passthrough mode). With this option, I was given the modem block and my clients on the LAN get IPs from it (which makes way more sense than what was happening before).

Some remarkably smart people on this thread.  Very enlightening conversation.  I was able to get eap_proxy going on the bgw210-700 on the first shot with @jaysoffian's files and @genghis1227's instructions.  I got it going on the erpoe5, erx and edgerouter 4.  However, instead of using the perfect bridge, I spent the next 4 days wondering why the RG had a red blinking led on the broadband (ONT) connection :)
Shows how the human brain is trained to see green to indicate things are OK.
Thank you folks for the great instructions and wizardry.  Some fine engineering indeed!

Some remarkably smart people on this thread. Very enlightening conversation. I was able to get eap_proxy going on the bgw210-700 on the first shot with @jaysoffian's files and @Genghis1227's instructions. I got it going on the erpoe5, erx and edgerouter 4. However, instead of using the perfect bridge, I spent the next 4 days wondering why the RG had a red blinking led on the broadband (ONT) connection :)
Shows how the human brain is trained to see green to indicate things are OK.

I recently changed from a PACE 5268AC to the ARRIS BGW210-700.  I had already had my ER-4 set up with EAP-Proxy so only had to change the MAC and DUID to get it all working.  Thank you to those on this thread for the DUID help.  The old gen-duid.sh script from pfatt does not include the correct prefix for the BGW210-700, but using the prefix here worked!
FYI, I also found that if you create a DHCP server on the ER-4 to serve addresses to the BGW210, it'll stop blinking and "be happy" with the world!

I got this working on ER-Lite 3 with the help of this thread. Adding my findings here to help others:

The new BGW300 series RG devices use the same DUID prefix as the older 210 series (see above).
If nothing seems to be working, try running the dhcp6c command directly as described here. In my case, it revealed that the dhcp client couldn't even send packets on my WAN interface.
If your show interfaces ethernet $wan_interface says tentative dadfailed - it means there's a duplicate IPv6 address somewhere connected to that interface. In my case (I think) it was because I changed my ONT mac address.. the wrong one.. it's complicated. Changing the ONT's mac fixed it.
To see what DHCP stuff is being sent on your WAN interface, here's a handy one-liner: sudo tcpdump -i $wan_interface -n -vvvv "(udp port 546 or 547) or icmp6". There may be a lot of noise about neighbor advertisements
The router getting its IP6 address looks like IA_ADDR 2001:506:XXXX:XXX::1 pltime:3600 vltime:3600
The delegated prefix looks like IA_PD-prefix 2600:1700:XXXX:XXXX::/60 pltime:3600 vltime:3600
It seems to take a while for T to actually send the DHCP6 reply. I was sending out dhcp6 solicit for a good 10 minutes before finally seeing a dhcp6 advertise. I honestly had given up working on this for the day, but surprisingly got a v6 delegated address on my phone later that day. So be patient if you don't see it right away in tcpdump :)

Best of luck!


Changed the middleware to only require appointment_date_time column

Description
The appointment middleware was asking for two separate date and time columns, this has been fixed
Type

[x] This is a bugfix.
[ ] This is a new feature.
[ ] This is part of a feature.

Organization

[ ] Have you linked this pull request to a Trello card?
[x] Have you named the branch in the format of feature/describe_feature_or_change OR bug/describe_bug_this_is_fixing

Review

[ ] Is this a work in progress?
[x]  Is this ready to be reviewed?
[ ]  Have you added two reviewers to this pull request?

fixed by #30

fixed by #30


DPL-936-5 - As developers we need to fork JSON API 0.9.0 so we can fix a minor issues so we can upgrade rails to 6.1 to apply the security fix

User story
As developers we need to fork JSON API 0.9.0 so we can fix a minor issues so we can upgrade rails to 6.1 to apply the security fix
Who are the primary contacts for this story
Abdullah / Steve
Who is the nominated tester for UAT
PSD
Acceptance criteria
To be considered successful the solution must allow:

[x] Fork jsonapi into sanger space instead of a personal GitHub space shown in the steps here
[x] Change Gemfile of the freeze-jsonapi-resources branch to use the dependency from sanger space
[ ] Merge Sequencescape freeze-jsonapi-resources into Sequencescape develop
[ ] Rebase the depfu dependency update https://github.com/sanger/sequencescape/pull/3892

Dependencies
This story is blocked by the following dependencies:

#<issue_no.>
sanger/#<issue_no.>

References
This story has a non-blocking relationship with:

#3950
#3892

Additional context
Add any other context or screenshots about the feature request here.

@yoldas any ideas why the following error comes up when trying to bin/setup?
Installing mysql2 0.5.5 with native extensions
Using record_loader 0.3.0 from https://github.com/sanger/record_loader (at master@9e7481f)
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/gems/3.0.0/gems/mysql2-0.5.5/ext/mysql2
/Users/dp27/.rbenv/versions/3.0.6/bin/ruby -I /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0 -r ./siteconf20240217-35677-431vn1.rb extconf.rb --with-opt-dir\=/opt/homebrew/opt/openssl@3
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_gc_mark_movable()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enc_interned_str() in ruby.h... yes
-----
Using --with-openssl-dir=/Users/dp27/.rbenv/versions/3.0.6/openssl
-----
-----
Using mysql_config at /opt/homebrew/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_DEFAULT_AUTH in mysql.h... yes
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... no
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /opt/homebrew/Cellar/mysql/8.3.0/lib
-----
creating Makefile

current directory: /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/gems/3.0.0/gems/mysql2-0.5.5/ext/mysql2
make DESTDIR\= clean

current directory: /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/gems/3.0.0/gems/mysql2-0.5.5/ext/mysql2
make DESTDIR\=
compiling client.c
In file included from client.c:15:
./mysql_enc_name_to_ruby.h:43:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
mysql2_mysql_enc_name_to_rb_hash (str, len)
^
./mysql_enc_name_to_ruby.h:86:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
mysql2_mysql_enc_name_to_rb (str, len)
^
client.c:1438:3: error: call to undeclared function 'mysql_ssl_set'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  mysql_ssl_set(wrapper->client,
  ^
client.c:1438:3: note: did you mean 'mysql_close'?
/opt/homebrew/Cellar/mysql/8.3.0/include/mysql/mysql.h:797:14: note: 'mysql_close' declared here
void STDCALL mysql_close(MYSQL *sock);
             ^
2 warnings and 1 error generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/gems/3.0.0/gems/mysql2-0.5.5 for inspection.
Results logged to /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/gems/3.0.0/extensions/arm64-darwin-23/3.0.0/mysql2-0.5.5/gem_make.out

  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:93:in `run'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:44:in `block in make'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:36:in `each'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:36:in `make'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:63:in `block in build'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/tempfile.rb:317:in `open'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:159:in `build_extension'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:193:in `block in build_extensions'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `each'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/ext/builder.rb:190:in `build_extensions'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/rubygems/installer.rb:837:in `build_extensions'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:71:in `build_extensions'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/rubygems_gem_installer.rb:28:in `install'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/source/rubygems.rb:204:in `install'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:54:in `install'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:59:in `block in install_with_settings'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/rubygems_integration.rb:575:in `install_with_build_args'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:59:in `install_with_settings'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:186:in `do_install'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/worker.rb:62:in `apply_func'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/worker.rb:57:in `block in process_queue'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/worker.rb:54:in `loop'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/worker.rb:54:in `process_queue'
  /Users/dp27/.rbenv/versions/3.0.6/lib/ruby/3.0.0/bundler/worker.rb:91:in `block (2 levels) in create_threads'

An error occurred while installing mysql2 (0.5.5), and Bundler cannot continue.

In Gemfile:
  mysql2

== Command ["bundle install --jobs 4 --retry 3"] failed ==


Fix ping ticker close typo

Thank you for the PR. A test should probably be made for this too. I made this issue for that: https://github.com/MicahParks/websocket-pubsub/issues/5


Tracker misbehaves under system load, reporting zend problem

Hi,
It may not be related but probably is, I was compiling and running different programs on my operational node some hours ago, partly curious if I could break something.  When I finally checked my notifications I had clocked almost two hours with "zend" , but for all I know my zend was fine, and a zend restart also did not change anything. Pm2 restart was what got me connected again. Perhaps the tracker does not recover well from 100% CPU situtations, and/or perhaps it would be an idea to issue pm2 restart once in while on a working node.
https://securenodes.eu.zensystem.io/nodes/3553/detail

The downtime returned, and went away after pm2 restart again. But in the first minutes it produced an exception as well
2017-12-20 07:58:32GMT | 2017-12-20 09:16:14GMT | 2017-12-20 09:17:37GMT | 01:19:05 | zend
2017-12-20 08:01:35GMT | 2017-12-20 08:03:34GMT | 2017-12-20 08:04:32GMT | 02:57 | peers
So 3 minutes after my zend "went down" I had a peers problem, which was "resolved" a minute later, sounds like there are some rough patches in the tracker.

One more downtime, this time following a failed challenge, machine was not busy

269030
2017-12-21 09:08:54GMT
-
00s

fail
exceeded reply time or timed out

248674
2017-12-20 07:56:51GMT
-
00s

fail
exceeded reply time or timed out

So after a third fail with the challenge, we could say this "zen downtime" is triggered by the challenge. The mysterious part is that there were two days with no problems in between

The 'exceeded reply time' indicates no reply was returned to the server.  This may be a communication issue if the node shows the challenge completing properly.

Closed for no activity. Reopen if needed.


Build a subproject site for docs

Follow the standard Kubernetes procedure to build a docs site on Netlify.

Which 'sig' should KMM be for covering the:
Desired domain name. It should follow the pattern of <sub-project>.sigs.k8s.io and match the [request](https://github.com/kubernetes/community/blob/master/github-management/subproject-site-requests.md#requesting-a-subproject-domain) for a subproject domain. part ?

KMM is part of SIG Node, but in that very case I think we would go with kmm.sigs.k8s.io. WDYT?

lgtm, waiting for feedback from the others and we can start the requests to get it rolling

Using the actual mkdocs setup with netlify: https://main--cute-kitsune-42fdb8.netlify.app/  (it's on my account, disregard domain), if it's fine, we can go with current setup and request the domain to have everything up and running

Related DNS: https://github.com/kubernetes/k8s.io/issues/4471


fix(server): Use namespaced ID to delete persisted game data

The intended behaviour of the server is to delete persisted game data when all players leave the game. When deleting the game data, the database implementation is currently passed the wrong ID, so the game data is never deleted, only the metadata. This PR fixes this bug.

Looks like there is a long error.

api.test.js was testing the implementation and expected the remove method to have been called with a specific ID. I’ve updated the test to match the metadata test. (And now there’s a lint error, which serves me right for making changes directly on GitHub instead of in a text editor 😂.)


[WIP] Working towards typescript interfaces having interfaces as children rather than classes

Fixes #494 eventually.
Dictionaries don't work.
Arrays are a bit hacky (any[], or the second part of TypeScriptTypeResolver.ResolveArray won't be handled correctly)
I'm using tabs in places there should be spaces.
Current output from ClassGenerationTests.When_generating_TypeScript_classes_then_output_is_correct is at:
https://gist.github.com/danzel/7a3cfeafa266c50794fc4f30924327fe
I need a bit of advice on how to change this so Dictionaries can work.
I've added a new property: NJsonSchema.CodeGeneration.TypeScript.Models.PropertyModel.TypeForInterface
Which contains the Type that should be used on the interface.
The logic in there is mostly copied from _resolve.Resolve and the methods it calls.
I can get this to work ok for straight objects and arrays (mostly), but for dictionaries the type ends up in the middle of the string, so altering it is a bit harder.
I think I'd like to be able to pass an extra value to _resolver.Resolve to specify we are generating an interface and it should add "I" to the front of any class names, but Resolve comes from TypeResolverBase, so I can't change the definition.
Please take a look over and give me some advice when you can :) Thanks!

Ok this is a bad one. I think you dont need most of the code because it already exists. Also we cant enhance the resolver with language specific features (interface). Ill look into this today and give you feedback. Youshould wait until then...

I copied your changes to a new branch. I think it looks good, except that one test is broken:
https://github.com/RSuter/NJsonSchema/tree/typescript-interface-children
https://github.com/RSuter/NJsonSchema/commit/752dfcc228b6840054f9d7b0d2f4b1a2dbd2d289
I think we will not support this (too complicated and very rare):
        public List<Car[]> Foo { get; set; }

        public Dictionary<string, Skill[]> Bar { get; set; }

Also we need to add more/improve unit tests:
https://github.com/RSuter/NJsonSchema/blob/typescript-interface-children/src/NJsonSchema.CodeGeneration.Tests/TypeScript/ConstructorInterfaceTests.cs

Can you do more checks on the changes in the branch? This is a major feature which can break things badly... we have to avoid this from happening.

There are two open questions:

Should we use toJSON check instead of instanceof

If the object is coming from another "process" (i.e from iframe or popup) the type may be loaded twice and instanceof fails.
Checking for toJSON is less generated code
This is why i think we shouldnt use instanceof

Should we put this whole feature behind a setting (default: true)

Maybe we introduced a break or a case where not compilable code is generated and this way you can disable the feature until it is fixed
This new feature generates much more code which may not be desired (if the feature is not used)

What do you think?


python311Packages.wyoming: 0.0.1 -> 1.1.0

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 244559 run on x86_64-linux 1

5 packages failed to build:

home-assistant-component-tests.wyoming
wyoming-faster-whisper
wyoming-faster-whisper.dist
wyoming-piper
wyoming-piper.dist

4 packages built:

python310Packages.wyoming
python310Packages.wyoming.dist
python311Packages.wyoming
python311Packages.wyoming.dist


add other value

Hello
Today I tried to add an other measurement value (eg sum_rain_1). This data comes in as the other data. So I thought that it should be easy to add it.
I then added sum_rain_1 to:
config.js: dataOrder:["Noise","Pressure","CO2","Humidity","Temperature","Rain","sum_wind_1","Wind"]
de.ison:   "SUM_RAIN_1": "Niederschlag 1h",
netatmo.js (formatter):
case 'sum_rain_1':
return value.toFixed(0) + ' mm';
netatmo.js (clazz):
case 'sum_rain_1':
return 'wi-raindrops';
But it did not work... The sum of rain did not show up on the magic mirror... ;-(
What else do I have to add, that additional values are displayed?
Thank you and best regards
Michael

@mwuethri74, if this is still relevant, could you post your rain module data? The data is only rendered if the value is listed in the data_type array. But most likely sum_rain_1 is not listed in there.

@CFenner
Thank you for your answer. Yes it would still be relevant. Unfortunately I am still not able to access the data (as written in "correct display of wind data". I do not find it in the debugger...
Is there an other way to access the data?
Thank you and best regards
Michael


Add Max CP information

Base Stats are already included, so Max CP is a relatively simple calculation away. Slight change to the class PokemonMapper based on the fine work of The Silph Road redditors, and you should be done.

The reddit thread I linked to references a "CP Multiplier". The links eventually point here, where the "exact multiplier" for Max CP at max pokemon level seems to be 0.79030001.
OK, sure, they have an entry for level "40.5" with a multiplier of "1", but that yields some very suspicious numbers in my experimentation. I think that particular table needs some more work from someone with a highly-leveled pokemon.

Thanks! I'll investigate time as soon as possible and put you as a reviewer in the PR


fix: remove form from search page

fixes #64

Coverage remained the same at 78.692% when pulling f208313335cd09e040259a946a6722e890b44546 on fix-search-page into ae7ce72141fc8c4411728391c0ca28aee310ae8a on master.


Test/document gulp usage in non-Docker dev

It looks like our gulpfile.js is missing the code that actually calls runServer(), and possibly other things. We should compare it again to the django-cookiecutter template, update as needed, and document the commands one needs to run to get static assets building locally.
As a temporary workaround, you can run gulp in a separate shell (but you'll still need to run and access python manage.py runserver manually on port 8000, not port 3000).
A/C:

[ ] Port 3000 does not render the site before this fix
[ ] Port 3000 renders the site after the fix

Moving this to the backlog because I am running the application in docker and therefore can't access port 3000.

Obsolete since we are moving to webpack. /CC @janelle-caktus


Ft 151 composition tokens pt ii

I went over changes and I'll merge seeing as @LiamMartens comments have been addressed 👍


Finishing of initial version of App

Please check the updates. Note the use of week number in the code base that is unique for any date.

Merge conflict fixes: Changed the position of bars on monthly view in UserInterface.py and tweaked OS (Mac/Linux/Windows) try/catch in MainApp.py


Commitsdeleted

This is just old main branch but without the env variables in application.properties pls merge ASAP

LGTM!


support compression

About this PR
This PR supports rootfs compression.
for metadata_gen.py:
if --compressed-dir is specified, The files under --target-dir are compressed under the directory specified by --compressed-dir.
for metadata_sign.py
if --compressed-rootfs-directory is specified, metadata.jwt contains compressed_rootfs_directory entry as follows:
[
  {
    "version": 1
  },
  {
    "directory": "dirs.txt",
    "hash": "7da1fe94d7a284d4e74080c27a681367347666b387b437d16350f4b8b811ccd7"
  },
  {
    "symboliclink": "symlinks.txt",
    "hash": "49232d6ea7f19c39dc0707922281fd2a3786f60362bd94842426990956816b0f"
  },
  {
    "regular": "regulars.txt",
    "hash": "89b49a5f12dea25885f4df60f71fd6ccf7fe499362daaf90f4576bcfc828b404"
  },
  {
    "persistent": "persistents.txt",
    "hash": "f816f282271403f3cc27f30898f78732e7f6ee1f3be667c69e12bdc2d1cc8d25"
  },
  {
    "rootfs_directory": "data"
  },
  {
    "certificate": "sign.pem",
    "hash": "7f1fd7b07e371dc2ff88085ff6aa59bfb929ae5fe390525475fa8c4d0518f25c"
  },
  {
    "total_regular_size": "5476789666"
  },
  {
    "compressed_rootfs_directory": "data.zst"
  }
]

If metadata.jwt contains compressed_rootfs_directory, OTA image is assumed to be compression supported.

I'll close this RP due to new implemenation.


MSID: 88830 Version: 2 DOI: 10.1101/2<IP_ADDRESS>5727

MSID: 88830
Version: 2
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>5727
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=88830
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>5727

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/88830v2
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>5727
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/88830/v2/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

elocations missing from the references.


regexp/strict and regexp/match-any conflict with unicorn/better-regex

Information:

ESLint version: v8.19.0
eslint-plugin-regexp version: 1.7.0

Description

/\[([^[\]]+)]/g

error from this plugin
Unescaped source character ']'

After fixed:
/\[([^[\]]+)\]/g

error from unicorn/better-regex
/\[([^[\]]+)\]/g can be optimized to /\[([^[\]]+)]/g

/{{([\S\s]+?)}}/g

regexp/match-any is reported
/{{([\s\S]+?)}}/g

unicorn/better-regex is reported

I think we should adapt https://github.com/SamVerschueren/clean-regexp and https://github.com/DmitrySoshnikov/regexp-tree

I don't know what the unicorn/better-regex says is better, but I think theregexp/strict rule is working correctly.
/]/ is allowed by Annex B, but if we don't use Annex B (We describe it as strict), I think it's a regex that is strictly a syntax error.
https://ota-meshi.github.io/eslint-plugin-regexp/rules/strict.html

The regexp/match-any rule allows you to use options to choose your preferred notation.
https://ota-meshi.github.io/eslint-plugin-regexp/rules/match-any.html

Raised https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1852 to discuss.
I hope these two plugins can work better together by default, some rules can be extracted from unicorn to regexp instead?

In my opinion, if you want to use unicorn/better-regex, recommend not to use eslint-plugin-regexp.
If you want to use eslint-plugin-regexp, recommended not to use unicorn/better-regex.
unicorn/better-regex can be used without complicated options. However, detailed user preferences cannot be set. eslint-plugin-regexp has many options, so you can configure it to your preferences.
I think they have different purposes.

I think the default options should be best practices for most projects, so although these are two different plugins, but they can share why they choose different style, and what's the benefits and downsides, and then we can choose whether or not change the default behaviors.

I don't know what the idea of unicorn/better-regex is to say "better". So I don't know if that makes sense. If we're not sure if that regexp is "better", it doesn't make sense to change the default behavior.
Do you know about the "better" of unicorn/better-regex?

Raised sindresorhus/eslint-plugin-unicorn#1852 to discuss.
I hope these two plugins can work better together by default, some rules can be extracted from unicorn to regexp instead?

That's why I raised the related issue for discussion with maintainers from eslint-plugin-unicorn, we can wait for a while for them?

better-regex was dropped from unicorn

no... that's safe-regex


Add demo of sending most active speakers' video

This demo implements 'smart' sending which just shows the last 16 people who clicked the video toggle button. This isn't really useful in most real-life scenarios where more than 16 people are in a call.
My suggestion is that this demo is extended to provide some real 'smart' behaviour. For example, using active speaker detection to autonomously decide which 16 videos to display.

@rossng Thanks for your suggestion. I will bring this back to our team to consider updating this demo.
For your specific use case with active speaker prioritization, you could take a look at the user guide for priority-based downlink policy that is just merged in GitHub recently.


add evaluable functor: atan2

#144

Codecov Report

Merging #170 (fa82d26) into main (e605e4c) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #170      +/-   ##
==========================================
+ Coverage   95.45%   95.46%   +0.01%
==========================================
  Files          19       19
  Lines        6005     6026      +21
==========================================
+ Hits         5732     5753      +21
  Misses        228      228
  Partials       45       45

Impacted Files
Coverage Δ

engine/number.go
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e605e4c...fa82d26. Read the comment docs.


Update parmap API to remove DeprecationWarnings

Hi,
parmap 1.5.0 introduced support for passing keyword arguments to mapped functions. The drawback of this feature is that a consistent naming of parmap arguments is needed in order to prevent conflicts
between parmap arguments and user-defined arguments. The new parmap convention is to prefix all its arguments with "pm_" (for parmap) as documented http://parmap.readthedocs.io/en/latest/
This commit updates the DeepLearningImplementations parmap calls to use the new API, removing the deprecation warnings that appear with parmap==1.5.1 (the parmap version used).
https://github.com/zeehio/parmap/blob/e0bc5969ab13562ec9ea2d8131f1cd9ecb8448a7/ChangeLog#L11
Feel free to merge if you see fit :+1:
Sergio (parmap author)

Sounds good, merging