Skip to content
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

net, syscall: implement network interface API on Solaris #7177

Closed
mikioh opened this issue Jan 22, 2014 · 16 comments
Closed

net, syscall: implement network interface API on Solaris #7177

mikioh opened this issue Jan 22, 2014 · 16 comments

Comments

@mikioh
Copy link
Contributor

mikioh commented Jan 22, 2014

Solaris supports routing socket, so it would not be tough.
@mikioh
Copy link
Contributor Author

mikioh commented Jan 23, 2014

Comment 1:

Also multicast address handling stuff needs to be implemented on dragonfly.

@rsc
Copy link
Contributor

rsc commented Mar 3, 2014

Comment 2:

Labels changed: added release-none.

Status changed to Accepted.

@mikioh mikioh changed the title net, syscall: implement network interface API on dragonfly, solaris net, syscall: implement network interface API on Solaris Jan 23, 2015
@rsc rsc removed the os-solaris label Apr 10, 2015
@rsc rsc added this to the Unplanned milestone Apr 10, 2015
@postwait
Copy link

This should provide the support for interfaces and addresses (sans Multicast for which there is a separate issue files).

postwait@d482dd7

@bradfitz
Copy link
Contributor

@postwait, we can't take patches that way. Everything that goes into one of the Go repos needs a CLA agreement. See https://golang.org/doc/contribute.html . That page is a wall of text, but it's easier than it looks.

@postwait
Copy link

@bradfitz I just posted it here for other people to play with.... I already put it here as well..

https://go-review.googlesource.com/#/c/29190/

@gopherbot
Copy link

CL https://golang.org/cl/29190 mentions this issue.

@postwait
Copy link

postwait commented Sep 14, 2016

One issue with the code is that it fails the net.TestInterfaces

It would seem that the go code assumes that an ifindex on an interface uniquely refers to a set of properties on the interface. On Solaris... ifindex+family uniquely describe this.

So, on my box there are two interfaces with ifindex: 1... one is IPv4 and the other is IPv6... the test fails because these two interfaces have different MTUs.

I see two solution... fake an ifindex, or unbreak this uniqueness assumption.

@bradfitz
Copy link
Contributor

@mikioh, preferences?

@postwait
Copy link

A "bad solution" but flexible is to have this make the ifindex's act as

go_ifindex := (ifindex * 256) + family

It would then be sparse, but allow for all families to be be uniquely indexed... It's a nasty approach though.

@postwait
Copy link

Actually fudging the ifindex isn't useful. That test does a check by name as well. There are certainly two lo0's on my box... and they definitely have different MTUs. So, back to square one... almost need to simply annotate that the test assumptions aren't valid on Illumos/Solaris.

@postwait
Copy link

Not so good at this Gerritt thing... super different workflow 👎

@bradfitz
Copy link
Contributor

It grows on you. I can't do a Github code review these days.

@postwait
Copy link

The latest change proposed skips the test as invalid on Solaris.

@gopherbot
Copy link

CL https://golang.org/cl/29892 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/29891 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/29893 mentions this issue.

gopherbot pushed a commit to golang/net that referenced this issue Sep 29, 2016
This change introduces a package that provides basic functions for the
manipulation of logical network interfaces, interface addresses and
data links on Solaris.

As BSD variants implement routing socket and routing messages, Linux
implements netlink socket and netlink messages, Solaris implements
STREAMS-like interface for reading, writing network facility
information inside the kernel. The package wraps various I/O control
calls which involve message exchanges between kernel protocol modules
in exposed APIs.

At present, the package supports Solaris 11 or above.

Updates golang/go#7177.

Change-Id: I192d85e53b0bee942dfefca0f73a3eb94ab8bfe9
Reviewed-on: https://go-review.googlesource.com/29893
Reviewed-by: Ian Lance Taylor <iant@golang.org>
gopherbot pushed a commit that referenced this issue Oct 4, 2016
golang.org/x/net/lif becomes vendor/golang_org/x/net/lif.

At git rev 9f0e377 (golang.org/cl/29893)

Updates #7177.

Change-Id: Id838fcc234e71f735bb2609073f4c2214b48a970
Reviewed-on: https://go-review.googlesource.com/29891
Reviewed-by: Ian Lance Taylor <iant@golang.org>
@mikioh mikioh modified the milestones: Go1.8, Unplanned Oct 4, 2016
@golang golang locked and limited conversation to collaborators Oct 4, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants