#ifndef NET_PRIVATE_H
#define NET_PRIVATE_H

#include <net.h>
#include <transport.h>
#include <stddef.h>

struct net_host
{
    enum net_domain d;
    struct net_host_domain *h;
};

int net_init_ipv4(void);
void net_deinit_ipv4(void);
struct net_host_domain *net_server_ipv4(const union net_server *srv);
struct net_host_domain *net_connect_ipv4(const union net_connect *c);
int net_write_ipv4(struct net_host_domain *h, net_peer p, const void *buf, size_t n);
int net_close_ipv4(struct net_host_domain *h);
int net_update_ipv4(struct net_host_domain *h);
enum net_role net_role_ipv4(const struct net_host_domain *h);
int net_set_event_ipv4(struct net_host_domain *d, const struct net_event *ev);

int net_init_serial(void);
void net_deinit_serial(void);
struct net_host_domain *net_server_serial(const union net_server *srv);
struct net_host_domain *net_connect_serial(const union net_connect *c);
int net_write_serial(struct net_host_domain *h, net_peer p, const void *buf, size_t n);
int net_close_serial(struct net_host_domain *h);
int net_update_serial(struct net_host_domain *h);
enum net_role net_role_serial(const struct net_host_domain *h);
int net_set_event_serial(struct net_host_domain *d, const struct net_event *ev);
void net_serial_on_received(const struct transport_event *t_ev,
    const struct net_event *n_ev);

#endif /* NET_PRIVATE_H */
