-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ei_connect does not handle IPv6 #5068
Comments
Unfortunately IPv6 support for |
Hi there, we can try to contribute, though we'd really appreciate some guidelines on what exactly needs to be changed. Thanks |
I'm not able to tell you exactly what needs to be changed, but I can give you a couple of general guidelines. Compatibility is important. The more the better, but some incompatibilities may have to be accepted. I would say binary incompatible changes are acceptable. That is, requiring the user to recompile the code that he/she wants to link against the It would be nice if there wasn't an explosion of new functions, but it is perhaps unavoidable. I also just noted that the |
Ok, so from my brief research and according to this article the things to solve are:
It seems that ei_portio doesn't require any changes - it should work with |
This would require modification of users existing code when the struct is used as input, since the
At least The Note that I cannot give you a complete list of what needs to be done, since I do not have time to look through everything. |
@mat-hek The ip-address |
@rickard-green thanks for all the hints. Have you considered adding |
@mat-hek No, but I like it! Even better would be |
Problem statement:
I'm working on an Elixir project that uses the membrane framework, depending heavily on cnodes. In general everything has just worked, but my team recently tried to deploy to a PaaS (fly.io) which creates an IPv6 wireguard mesh on which nodes can connect. We started the application with
RELEASE_DISTRIBUTION
ofname
, and started epmd with-proto_dist inet6_tcp
, whereupon the application could not connect to any cnodes started by membrane.Later we discovered the ei_connect documentation, where it clearly states:
It seems like epmd has had contributions in the past few years to support IPv6, but this work has not tricked down into the C functions for cnodes.
Proposed solution
If possible, it would be great for the C libraries shipped with
erl_interface
to support both IPv4 and IPv6.Alternatives
Our primary workaround for right now is to avoid using this particular PaaS, and deploy to a platform that allows us to connect application nodes via an IPv4 network.
If we do find ourselves deploying somewhere where nodes must be connected via IPv6, our secondary workaround is to start the application epmdless using
ERL_DIST_PORT
, so-start_epmd false
, but with the node name including the IPv6 address, then make sure that all cnodes are started with node name including127.0.0.1
. Our thought is that application nodes can connect to each other via specific ports on IPv6 without epmd, and cnodes can connect via epmd on localhost.The text was updated successfully, but these errors were encountered: