anet.git
2 months agoSet VERSION to 0.4.1 master v0.4.1
Reto Buerki [Wed, 8 Aug 2018 15:22:04 +0000 (17:22 +0200)]
Set VERSION to 0.4.1

2 months agoDo not hide program calls in Makefile
Reto Buerki [Tue, 29 May 2018 18:27:44 +0000 (20:27 +0200)]
Do not hide program calls in Makefile

It's easier to find errors if executed commands are not hidden
(especially on build hosts).

2 months agoMove LDFLAGS before library objects
Nicolas Boulenguez [Sat, 26 May 2018 11:08:03 +0000 (13:08 +0200)]
Move LDFLAGS before library objects

It is better for options like --as-needed to take effect, and required
with gprbuild/18 ("cannot find object file -Wl,-z,relro").

2 months agoMake project variables flow explicit
Nicolas Boulenguez [Sun, 4 Feb 2018 12:21:59 +0000 (13:21 +0100)]
Make project variables flow explicit

The reader is not obliged to read Makefile and *.gpr at the same time to
know the default value anymore.

Always passing VERSION does not hurt, and may one day help building
tests with the shared library in one gprbuild pass.

2 months agoBuild all objects with ADAFLAGS
Nicolas Boulenguez [Sun, 4 Feb 2018 12:14:43 +0000 (13:14 +0100)]
Build all objects with ADAFLAGS

Put them last on each command line so that they take precedence.  For
this, avoid conflicts between -cargs and Compiler.Switches.

2 months agoPass LDFLAGS to Linker packages of all projects
Nicolas Boulenguez [Sun, 4 Feb 2018 11:54:38 +0000 (12:54 +0100)]
Pass LDFLAGS to Linker packages of all projects

2 months agoReplace project case statements with concatenations
Nicolas Boulenguez [Sun, 4 Feb 2018 11:48:29 +0000 (12:48 +0100)]
Replace project case statements with concatenations

Adjust COVDIR in order to directly use Build variable in output path.

4 months agoBind all executables with the same options
Nicolas Boulenguez [Sun, 4 Feb 2018 11:44:30 +0000 (12:44 +0100)]
Bind all executables with the same options

4 months agoReplace Default_Switches with Switches
Nicolas Boulenguez [Sun, 4 Feb 2018 11:42:56 +0000 (12:42 +0100)]
Replace Default_Switches with Switches

Default_Switches is old style.

4 months agoGive each project an explicit qualifier
Nicolas Boulenguez [Sat, 3 Feb 2018 19:40:55 +0000 (20:40 +0100)]
Give each project an explicit qualifier

Declare projects as either abstract, library or standard.

7 months agoUpdate licence information in README v0.4.0
Reto Buerki [Tue, 20 Feb 2018 13:29:18 +0000 (14:29 +0100)]
Update licence information in README

7 months agoMake Accept|Receive source tests more robust
Reto Buerki [Mon, 19 Feb 2018 16:35:15 +0000 (17:35 +0100)]
Make Accept|Receive source tests more robust

Add additional entry to accept source test tasks to ensure that the
receiver is ready before the connection attempt. Furthermore, add outer
exception handler to all [Accept|Receive]_Source_[V4|V6] tests which
aborts the test task on exception.

7 months agoSet VERSION to 0.4.0
Reto Buerki [Mon, 19 Feb 2018 14:48:16 +0000 (15:48 +0100)]
Set VERSION to 0.4.0

7 months agoMake Net_Ifaces package a child of Sockets
Reto Buerki [Fri, 9 Feb 2018 14:18:48 +0000 (15:18 +0100)]
Make Net_Ifaces package a child of Sockets

This allows to use a thick binding UDPv4 socket in the Query_Iface and
Set_Iface_State operations (which gives us proper error handling if the
socket can not be created).

8 months agoDrop unneeded use type clause
Adrian-Ken Rueegsegger [Fri, 2 Feb 2018 13:49:45 +0000 (14:49 +0100)]
Drop unneeded use type clause

8 months agoUse Ether_Addr_Type to declare Bcast_HW_Addr constant
Reto Buerki [Fri, 2 Feb 2018 08:25:58 +0000 (09:25 +0100)]
Use Ether_Addr_Type to declare Bcast_HW_Addr constant

8 months agoMakefile: Switch to gprbuild
Reto Buerki [Wed, 31 Jan 2018 10:47:41 +0000 (11:47 +0100)]
Makefile: Switch to gprbuild

8 months agoAdd ARP feature to README
Reto Buerki [Tue, 30 Jan 2018 12:38:36 +0000 (13:38 +0100)]
Add ARP feature to README

8 months agoImplement Linux arping(8) example
Reto Buerki [Mon, 29 Jan 2018 16:49:53 +0000 (17:49 +0100)]
Implement Linux arping(8) example

8 months agoImplement stream array to ARP header conversion
Reto Buerki [Mon, 29 Jan 2018 16:05:50 +0000 (17:05 +0100)]
Implement stream array to ARP header conversion

8 months agoImplement initial ARP header processing
Reto Buerki [Mon, 29 Jan 2018 15:19:17 +0000 (16:19 +0100)]
Implement initial ARP header processing

The ARP.To_Stream function converts the Ada ARP_Header_Type to stream
element array as defined by RFC 826.

8 months agoMove Ether_Addr_Type subtype to top-level package
Reto Buerki [Mon, 29 Jan 2018 14:15:27 +0000 (15:15 +0100)]
Move Ether_Addr_Type subtype to top-level package

8 months agoAdd Proto_Packet_Arp to Packet.Protocol_Type
Reto Buerki [Mon, 29 Jan 2018 13:38:15 +0000 (14:38 +0100)]
Add Proto_Packet_Arp to Packet.Protocol_Type

Map it to ETH_P_ARP in the body.

8 months agoAdd ETH_P_ARP protocol constant (16#0806#)
Reto Buerki [Mon, 29 Jan 2018 13:37:32 +0000 (14:37 +0100)]
Add ETH_P_ARP protocol constant (16#0806#)

12 months agoPush unsigned long/long use type clauses to children
Adrian-Ken Rueegsegger [Fri, 6 Oct 2017 09:54:22 +0000 (11:54 +0200)]
Push unsigned long/long use type clauses to children

Instead of using the two types in the private spec part of Anet.Sockets,
push the clauses down to the child packages as needed.

12 months agoDrop unneeded use type clauses
Adrian-Ken Rueegsegger [Fri, 6 Oct 2017 09:45:48 +0000 (11:45 +0200)]
Drop unneeded use type clauses

12 months agoAdd support for IPv6 shortform addresses
Reto Buerki [Mon, 25 Sep 2017 07:57:38 +0000 (09:57 +0200)]
Add support for IPv6 shortform addresses

Use the inet_pton(3)/inet_ntop(3) functions to implement conversion
support for IPv6 shortform addresses.

Thanks to Dani <danielcheagle@gmail.com> for the initial patch.

13 months agoFix port handling in UDPv6 Receive
Reto Buerki [Thu, 7 Sep 2017 14:55:21 +0000 (16:55 +0200)]
Fix port handling in UDPv6 Receive

The port in the thin layer is in network byte order, convert to host
order before returning it to the caller.

13 months agoImplement Receive_Source_V6 test
Reto Buerki [Thu, 7 Sep 2017 14:54:52 +0000 (16:54 +0200)]
Implement Receive_Source_V6 test

The test verifies the peer source address handling of Receive in the
UDPv6 case.

13 months agoFix port handling in UDPv4 Receive
Reto Buerki [Thu, 7 Sep 2017 14:50:28 +0000 (16:50 +0200)]
Fix port handling in UDPv4 Receive

The port in the thin layer is in network byte order, convert to host
order before returning it to the caller.

13 months agoImplement Receive_Source_V4 test
Reto Buerki [Thu, 7 Sep 2017 14:49:33 +0000 (16:49 +0200)]
Implement Receive_Source_V4 test

The test verifies the peer source address handling of Receive in the
UDPv4 case.

13 months agoImplement Accept_Source_V6 test
Reto Buerki [Thu, 7 Sep 2017 14:20:23 +0000 (16:20 +0200)]
Implement Accept_Source_V6 test

The test verifies the peer source address handling of Accept_Connection
in the TCPv6 case.

13 months agoImplement Accept_Source_V4 test
Reto Buerki [Thu, 7 Sep 2017 14:16:39 +0000 (16:16 +0200)]
Implement Accept_Source_V4 test

The test verifies the peer source address handling of Accept_Connection
in the TCPv4 case.

13 months agoExport peer socket info in stream receiver
Reto Buerki [Thu, 7 Sep 2017 09:13:20 +0000 (11:13 +0200)]
Export peer socket info in stream receiver

Make peer sockaddr information available in stream receiver receive/send
callback. This is done by adding the address type and associated accept
connection procedure as generic parameters.

13 months agoUse new procedure to implement overriding UNIX variant
Reto Buerki [Thu, 7 Sep 2017 08:25:08 +0000 (10:25 +0200)]
Use new procedure to implement overriding UNIX variant

13 months agoImplement UNIX specific Accept_Connection procedure
Reto Buerki [Thu, 7 Sep 2017 08:24:03 +0000 (10:24 +0200)]
Implement UNIX specific Accept_Connection procedure

The procedure additionally returns the peer's address as source
argument.

13 months agoUse new procedure to implement overriding V6 variant
Reto Buerki [Thu, 7 Sep 2017 08:15:05 +0000 (10:15 +0200)]
Use new procedure to implement overriding V6 variant

13 months agoImplement v6 specific Accept_Connection procedure
Reto Buerki [Thu, 7 Sep 2017 08:14:04 +0000 (10:14 +0200)]
Implement v6 specific Accept_Connection procedure

The procedure additionally returns the peer's address.

13 months agoUse new procedure to implement overriding V4 variant
Reto Buerki [Thu, 7 Sep 2017 07:56:43 +0000 (09:56 +0200)]
Use new procedure to implement overriding V4 variant

13 months agoImplement v4 specific Accept_Connection procedure
Reto Buerki [Thu, 7 Sep 2017 07:55:27 +0000 (09:55 +0200)]
Implement v4 specific Accept_Connection procedure

The procedure additionally returns the peer's address.

13 months agoRename UDPv6_Sockaddr_Type to IPv6_Sockaddr_Type
Reto Buerki [Thu, 7 Sep 2017 09:00:30 +0000 (11:00 +0200)]
Rename UDPv6_Sockaddr_Type to IPv6_Sockaddr_Type

Nothing really UDP-specific about it.

13 months agoRename UDPv4_Sockaddr_Type to IPv4_Sockaddr_Type
Reto Buerki [Thu, 7 Sep 2017 08:58:22 +0000 (10:58 +0200)]
Rename UDPv4_Sockaddr_Type to IPv4_Sockaddr_Type

Nothing really UDP-specific about it.

2 years agoSet VERSION to 0.3.4 v0.3.4
Reto Buerki [Mon, 10 Oct 2016 13:11:41 +0000 (15:11 +0200)]
Set VERSION to 0.3.4

2 years agoImplement socket shutdown function with associated test
John Marino [Tue, 4 Oct 2016 18:55:27 +0000 (13:55 -0500)]
Implement socket shutdown function with associated test

The POSIX shutdown function provides finer control on how to disable
open socket communications.  Whereas the close function will disable
both sending and receiving operations on the socket, the shutdown
function can shutdown either side of the full-duplex connection as well
as both sides (which is equivalent to the close function).

2 years agoSuppress SIGPIPE signal for send operations
John Marino [Tue, 4 Oct 2016 18:46:15 +0000 (13:46 -0500)]
Suppress SIGPIPE signal for send operations

Suppress SIGPIPE signal upon writing attempts on disconnected sockets.
The POSIX standard requires that a SIGPIPE signal is generated when
attempting to send on a stream-oriented socket that is no longer
connected.

However, directly handling signals in an Ada program should be avoided
where possible.

Setting the MSG_NOSIGNAL flag of the send and sendto functions will
suppress this signal. The EPIPE error is still returned by those
functions in that case.

2 years agoAdd support for TCP_NODELAY socket option
Reto Buerki [Mon, 26 Sep 2016 08:42:10 +0000 (10:42 +0200)]
Add support for TCP_NODELAY socket option

Thanks to John Marino for the original patch.

2 years agoAdd TCP protocol level
Reto Buerki [Mon, 26 Sep 2016 08:41:48 +0000 (10:41 +0200)]
Add TCP protocol level

2 years agoAdd Level argument to Set_Socket_Option procedures
Reto Buerki [Mon, 26 Sep 2016 08:40:56 +0000 (10:40 +0200)]
Add Level argument to Set_Socket_Option procedures

This argument specifies the protocol level the option applies to.

2 years agoFix cov target
Reto Buerki [Wed, 3 Aug 2016 11:48:46 +0000 (13:48 +0200)]
Fix cov target

2 years agoSet TZ=UTC before calling asciidoc
Reto Buerki [Fri, 8 Jul 2016 14:18:23 +0000 (16:18 +0200)]
Set TZ=UTC before calling asciidoc

This is required to support reproducible builds in Debian.

2 years agoSet VERSION to 0.3.3 v0.3.3
Reto Buerki [Wed, 29 Jun 2016 10:26:01 +0000 (12:26 +0200)]
Set VERSION to 0.3.3

2 years agoUpdate README
Reto Buerki [Wed, 29 Jun 2016 09:56:32 +0000 (11:56 +0200)]
Update README

2 years agoUse distinct obj/lib directories for Linux/BSD
Reto Buerki [Wed, 22 Jun 2016 14:52:39 +0000 (16:52 +0200)]
Use distinct obj/lib directories for Linux/BSD

2 years agoAdd non-blocking server example
Stefan Berghofer [Wed, 22 Jun 2016 14:16:03 +0000 (16:16 +0200)]
Add non-blocking server example

2 years agoUse Check_Or_Raise procedure where appropriate
Reto Buerki [Wed, 22 Jun 2016 13:50:09 +0000 (15:50 +0200)]
Use Check_Or_Raise procedure where appropriate

2 years agoProvide Errno.Check_Or_Raise procedure
Reto Buerki [Wed, 22 Jun 2016 13:40:48 +0000 (15:40 +0200)]
Provide Errno.Check_Or_Raise procedure

The procedure raises a Socket_Error exception with the given message and
appended errno string if the specified result code indicates failure.

2 years agoMove Socket_Error exception to top-level package
Reto Buerki [Wed, 22 Jun 2016 13:13:18 +0000 (15:13 +0200)]
Move Socket_Error exception to top-level package

2 years agoMove Get_Errno_String to new Anet.Errno package
Reto Buerki [Wed, 22 Jun 2016 12:52:35 +0000 (14:52 +0200)]
Move Get_Errno_String to new Anet.Errno package

2 years agoUse GNAT.OS_Lib.Errno_Message as Get_Errno_String
Reto Buerki [Wed, 22 Jun 2016 12:45:26 +0000 (14:45 +0200)]
Use GNAT.OS_Lib.Errno_Message as Get_Errno_String

2 years agoAdd Set_Nonblocking_Mode procedure to socket type
Reto Buerki [Wed, 22 Jun 2016 12:25:12 +0000 (14:25 +0200)]
Add Set_Nonblocking_Mode procedure to socket type

The procedure can be used to enable/disable non-blocking mode of
operation (i.e. O_NONBLOCK via fcntl F_SETFL cmd).

2 years agoImport fcntl in Sockets.Thin
Reto Buerki [Wed, 22 Jun 2016 12:24:40 +0000 (14:24 +0200)]
Import fcntl in Sockets.Thin

2 years agoAdd O_NONBLOCK fcntl flag to OS_Constants packages
Reto Buerki [Wed, 22 Jun 2016 10:20:47 +0000 (12:20 +0200)]
Add O_NONBLOCK fcntl flag to OS_Constants packages

The flag is OS specific.

2 years agoRevert "Use anet_lib project in anet_tests"
Reto Buerki [Wed, 13 Apr 2016 14:33:20 +0000 (16:33 +0200)]
Revert "Use anet_lib project in anet_tests"

This reverts commit 70e4ab2fbfa6421fdca4da87b7db6543a493cf4e. Including
the library project in the test project directly breaks coverage report.

2 years agoAdd Delete_On_Close field to unix socket
Reto Buerki [Wed, 13 Apr 2016 14:28:54 +0000 (16:28 +0200)]
Add Delete_On_Close field to unix socket

Only delete the socket path if this field is true (the default). Set the
field to False for new sockets created in Accept_Connection.

This ensures that the socket path is only deleted by the "parent" socket
on which Accept_Connection is called.

2 years agoUse admin-scoped address in Send_Multicast_V6 test v0.3.2
Reto Buerki [Fri, 13 Nov 2015 16:12:19 +0000 (17:12 +0100)]
Use admin-scoped address in Send_Multicast_V6 test

Otherwise newer kernels (> 3.10) expect a scope identifier when binding
an IPv6 link local address, a multicast link local address or a
multicast node local address to an IPv6 socket.

2 years agoMinor: Fix indentation
Reto Buerki [Fri, 13 Nov 2015 12:23:37 +0000 (13:23 +0100)]
Minor: Fix indentation

2 years agoUpdate copyright headers
Adrian-Ken Rueegsegger [Thu, 5 Nov 2015 13:31:38 +0000 (14:31 +0100)]
Update copyright headers

2 years agoSet VERSION to 0.3.2
Adrian-Ken Rueegsegger [Thu, 5 Nov 2015 13:32:23 +0000 (14:32 +0100)]
Set VERSION to 0.3.2

2 years agoDrop Sockaddr_In6_Size constant on Linux
Reto Buerki [Wed, 4 Nov 2015 16:29:29 +0000 (17:29 +0100)]
Drop Sockaddr_In6_Size constant on Linux

2 years agoFix C_Setsockopt call in Multicast_Set_Sending_Interface
Reto Buerki [Wed, 4 Nov 2015 16:24:36 +0000 (17:24 +0100)]
Fix C_Setsockopt call in Multicast_Set_Sending_Interface

The 'Size attribute returns the size of an object in memory in bits,
setsockopt(2) expects bytes.

2 years agoDrop Sockaddr_In_Size constant on Linux
Reto Buerki [Wed, 4 Nov 2015 16:24:21 +0000 (17:24 +0100)]
Drop Sockaddr_In_Size constant on Linux

2 years agoMake receivers restartable
Adrian-Ken Rueegsegger [Mon, 19 Oct 2015 14:35:54 +0000 (16:35 +0200)]
Make receivers restartable

Enable restarting of receivers that have been terminated by performing
all receive operations in a loop. Once termination is signaled, the
receiver task will re-enter the setup phase. Since the setup select
statement has a terminate alternative the task will quit if the main
task finishes execution.

2 years agoAssert source path when sending via Unix socket
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:57:30 +0000 (16:57 +0200)]
Assert source path when sending via Unix socket

2 years agoImplement Unix path to string conversion function
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:57:20 +0000 (16:57 +0200)]
Implement Unix path to string conversion function

The function returns the trimmed string representation of a full Unix
path.

2 years agoInitialize Src Unix path in Receive
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:54:49 +0000 (16:54 +0200)]
Initialize Src Unix path in Receive

Since the source is an out parameter of type Full_Path_Type, make sure
that the entire path is initialized.

2 years agoUse 'Size attribute to specify size of Sockaddr_In
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 13:46:52 +0000 (15:46 +0200)]
Use 'Size attribute to specify size of Sockaddr_In

Since the Sockaddr_In_Type has the same size for both IPv4 and IPv6 we
can safely use the 'Size attribute. This tells the C recvfrom function
how large the struct is to store the source information into.

3 years agoAssert source address when sending IPv6 datagrams
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:37:41 +0000 (16:37 +0200)]
Assert source address when sending IPv6 datagrams

3 years agoAssert source address when sending IPv4 datagrams
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:37:31 +0000 (16:37 +0200)]
Assert source address when sending IPv4 datagrams

3 years agoTest_Utils: Add getter functions for addresses
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:37:05 +0000 (16:37 +0200)]
Test_Utils: Add getter functions for addresses

3 years agoTest_Utils: Store source address in Dump procedures
Adrian-Ken Rueegsegger [Thu, 15 Oct 2015 14:36:50 +0000 (16:36 +0200)]
Test_Utils: Store source address in Dump procedures

This enables the assertion of the source address in tests.

4 years agoSet VERSION to 0.3.1 v0.3.1
Reto Buerki [Mon, 11 Aug 2014 22:03:22 +0000 (00:03 +0200)]
Set VERSION to 0.3.1

4 years agoRemove completed TODO item
Reto Buerki [Mon, 11 Aug 2014 20:44:49 +0000 (22:44 +0200)]
Remove completed TODO item

4 years agoRandomize ports in unit tests
Reto Buerki [Mon, 11 Aug 2014 20:41:51 +0000 (22:41 +0200)]
Randomize ports in unit tests

This allows parallel execution of the test runner (e.g. on a build
host).

4 years agoAdd Get_Random_Port number to Test_Utils package
Reto Buerki [Mon, 11 Aug 2014 20:38:35 +0000 (22:38 +0200)]
Add Get_Random_Port number to Test_Utils package

This function returns a random port in the range 30000 .. 40000. The PID
of the calling process is used to initialize the random number
generator.

4 years agoUse Thin.C_Getpid in Anet.Util package
Reto Buerki [Mon, 11 Aug 2014 20:36:34 +0000 (22:36 +0200)]
Use Thin.C_Getpid in Anet.Util package

4 years agoImport getpid function in Anet.Thin package
Reto Buerki [Mon, 11 Aug 2014 20:35:57 +0000 (22:35 +0200)]
Import getpid function in Anet.Thin package

4 years agoMinor: Fix indentation
Reto Buerki [Mon, 11 Aug 2014 20:34:49 +0000 (22:34 +0200)]
Minor: Fix indentation

4 years agoTasking: Replace Atomic pragma with protected type
Matthias Weidle [Fri, 11 Jul 2014 12:43:51 +0000 (14:43 +0200)]
Tasking: Replace Atomic pragma with protected type

Using the pragma Atomic to protect shared variables in tasking
environments is strongly discouraged by various sources. The
gnat-gpl-2014 compiler even fails to compile the code.

This issue is now fixed by using a protected type for the shared
counter variable instead.

4 years agoAdd TODO item
Reto Buerki [Tue, 27 May 2014 19:01:15 +0000 (21:01 +0200)]
Add TODO item

4 years agoUpdate README v0.3.0
Reto Buerki [Thu, 17 Apr 2014 07:51:47 +0000 (09:51 +0200)]
Update README

4 years agoUpdate copyright headers
Reto Buerki [Fri, 21 Mar 2014 10:35:24 +0000 (11:35 +0100)]
Update copyright headers

4 years agoPass optional LDFLAGS to anet_lib Library_Options
Reto Buerki [Fri, 21 Mar 2014 15:03:39 +0000 (15:03 +0000)]
Pass optional LDFLAGS to anet_lib Library_Options

4 years agoUse lowercase OS identifiers
Reto Buerki [Sat, 22 Mar 2014 19:01:31 +0000 (20:01 +0100)]
Use lowercase OS identifiers

4 years agoUpdate install target in Makefile
Reto Buerki [Fri, 21 Mar 2014 11:04:18 +0000 (12:04 +0100)]
Update install target in Makefile

4 years agoSkip IPv6 Multicast test on BSD
Reto Buerki [Fri, 21 Mar 2014 10:42:26 +0000 (11:42 +0100)]
Skip IPv6 Multicast test on BSD

Multicast loopback to own host is broken on BSD systems (see FreeBSD
bug #180065). Verified with FreeBSD 10.0-RELEASE.

4 years agoSet VERSION to 0.3.0
Reto Buerki [Fri, 21 Mar 2014 10:37:51 +0000 (11:37 +0100)]
Set VERSION to 0.3.0

4 years agoImplement Multicast_Set_Sending_Interface for UDPv6
Reto Buerki [Fri, 21 Mar 2014 10:16:00 +0000 (11:16 +0100)]
Implement Multicast_Set_Sending_Interface for UDPv6

The procedure chooses a concrete outgoing interface for UDPv6 Multicast
on a given socket.

Initial patch from John Marino, thanks!

4 years agoAdd IPV6_MULTICAST_IF to BSD OS constants
Reto Buerki [Fri, 21 Mar 2014 09:57:37 +0000 (10:57 +0100)]
Add IPV6_MULTICAST_IF to BSD OS constants

4 years agoAdd IPV6_MULTICAST_IF to Linux OS constants
Reto Buerki [Fri, 21 Mar 2014 09:56:43 +0000 (10:56 +0100)]
Add IPV6_MULTICAST_IF to Linux OS constants

4 years agoImplement Multicast_Set_Sending_Interface for UDPv4
Reto Buerki [Fri, 21 Mar 2014 09:51:41 +0000 (10:51 +0100)]
Implement Multicast_Set_Sending_Interface for UDPv4

The procedure chooses a concrete outgoing interface for UDPv4 Multicast
on a given socket.

Initial patch from John Marino, thanks!