GNetwork Library TODO:
=====================

Short-Term:

[_] Unify a lot of the socket() handling code.
    [_] Write a simple mechanism to map a GObject property to a socket option.
[_] Do "interface-info" work in GNetworkIpMulticast.
[_] Write testunix.c.
[_] Handle ICMP errors for UDP sockets?
[_] Fixup GNetworkUnixServer.

Long-Term:

1.) Socket options. There has got to be a generic way for GNetwork objects to
register and query their socket options... GObject properties provide the
"standard" method for GObjects to handle themselves in this regard, but it'd be
nice to have this be more easily extensible for subclasses of the tcp/udp/unix
classes. I'm thinking that a new GParamSpec would be in order:
GNetworkParamSpecSocketOption (looooooooooooooong name, I know, C namespacing
sucks, obviously). This way I could store the protocol level and the sockopt
integer along with the standard property stuff inside the GObject. The basic API
would look something like:

GNetworkParamSpecSocketOption {
  GParamSpec parent;

  GParamSpec *value_pspec;
  gint socket_level;
  gint option_id;
};

GParamSpec *gnetwork_param_spec_socket_option (GParamSpec * value_pspec,
					       gint socket_level,
					       gint option_id,
					       GParamSpecFlags flags);

/* retval == errno */
gint gnetwork_socket_option_get (gpointer sockfd, GParamSpec * opt_pspec,
				 GValue * value);
gint gnetwork_socket_option_set (gpointer sockfd, GParamSpec * opt_pspec,
				 const GValue * value);

This would make *ALL* BSD-socket options available as GObject properties --
insert groovy language wrapping foo here...
