upstart-socket-bridge doesn't support ipv6 sockets

Bug #942955 reported by Steve Langasek on 2012-02-28
This bug affects 3 people
Affects Status Importance Assigned to Milestone
upstart (Ubuntu)

Bug Description

Playing with upstart-socket-bridge to see if it's a solution for avoiding polling in the Ubuntu cups post-start (bug #855010), I find that the socket bridge only supports inet and unix sockets - it does not support inet6 sockets. As a result, it's impossible to use socket initialization for an ipv6 service... which nowadays should be approximately all services.

If we want socket initialization to be a viable option for services, ipv6 support is a must.

Related branches

Steve Langasek (vorlon) on 2012-02-28
Changed in upstart (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
Steve Langasek (vorlon) on 2012-06-01
Changed in upstart (Ubuntu):
assignee: nobody → James Hunt (jamesodhunt)
Kai Mast (kai-mast) wrote :

Just wondering. I am not familiar with the upstart codebase, but this seems rather trivial to fix. Where is the problem here?

On 31 December 2013 13:20, Kai Mast <email address hidden> wrote:
> Just wondering. I am not familiar with the upstart codebase, but this
> seems rather trivial to fix. Where is the problem here?

The whole upstart socket bridge is a single C file in the upstart codebase:

As the rest of the code base it heavily uses libnih library. Some
introduction / documentation about that library can be found at:



Kai Mast (kai-mast) wrote :

Thanks for the info Dimitri.
I looked at the code and still think this can be resolved by adding a case for AF_INET6 to both switches.

Sadly, I have no idea how to test/debug upstart. Otherwise, I would definitly give this a try...

Bartosz Kosiorek (gang65) wrote :

@Kai Mast
According to /sys/socket.h definition:

there isn't AF_INET6 declarations.

In "Address families" section there are only:
#define AF_INET 2 /* internetwork: UDP, TCP, etc. */

Bartosz Kosiorek (gang65) wrote :

Latest sys/socket.h is described here:

And there are AF_INET6 declaration.
Sorry for cofusion.

Kai Mast (kai-mast) wrote :

The linked branch builds now. I cannot find any tests for upstart socket bride, so I don't really now how to verify it is working. Any help?

Btw, here is a good tutorial how to convert code to IPv6:

Bartosz Kosiorek (gang65) wrote :

I look at your code and here is my remarks:
1. Line 335:
  char buffer[INET6_ADDRSTRLEN];
use nih_local. It shoul looks like:
  nih_local char buffer[INET6_ADDRSTRLEN];

2. Line 72, 73
  Add comment with description of the variables sin6_addr and sin_addr

3. Line 539-546
  Fix identation. You could follow Coding style section in HACKING file

4. Update ChangeLog file

5. Update man files (with additional examples of the IPv6 usage) in directory: extra/man/

Changed in upstart:
status: New → In Progress
Cameron Norman (cameronnemo) wrote :

So I made those tweaks you recommended, Bartosz.

Kai, you should install Ubuntu in a VM, install your Upstart branch from source, then write job that uses IPv6.

Kai Mast (kai-mast) wrote :

Thanks for picking this up cameron. Seem like you already tested it. Does it work?

Well, I was hoping there are some kind of unit tests for this.

James Hunt (jamesodhunt) on 2014-02-19
Changed in upstart (Ubuntu):
assignee: James Hunt (jamesodhunt) → nobody
Changed in upstart:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Related blueprints