package embox.net

module dev {
	option number netdev_table_sz=3
	option number netdev_quantity=8

	source "netdev.c"

	depends embox.mem.sysmalloc_api
	@NoRuntime depends embox.lib.libds
	depends embox.net.netlink
}

@DefaultImpl(core_no_net_ns)
abstract module core {
	option number amount_interface=4
}

module core_no_net_ns extends core {
	option string log_level="LOG_ERR"

	source "inetdev.c"

	depends dev /* for dev.c */
	@NoRuntime depends embox.lib.libds
	depends embox.mem.pool
	depends embox.net.net_namespace
}

module core_net_ns extends core {
	option string log_level="LOG_ERR"

	source "inetdev_net_ns.c"
	depends dev /* for dev.c */
	@NoRuntime depends embox.lib.libds
	depends embox.mem.pool
	depends embox.net.net_namespace
}

module sock {
	option string log_level="LOG_NONE"

	source "sock.c"
	source "socket/sock_hash.c"
	source "socket/sock_repo.c"
	source "socket/sock_factory.c"
	source "socket/sock_wait.c"

	depends embox.net.skbuff
	depends embox.kernel.task.idesc
	depends embox.kernel.task.idesc_event
	depends embox.arch.interrupt
	depends embox.mem.pool
	depends family
	depends net_sock

	depends sock_xattr_api
	@NoRuntime depends embox.security.api
	@NoRuntime depends embox.compat.posix.net.socket // for task_idx_ops_socket
}

@DefaultImpl(sock_noxattr)
abstract module sock_xattr_api {}

module sock_xattr extends sock_xattr_api {
	source "socket/sock_xattr.c"
	source "socket/sock_xattr.h"

	depends embox.fs.xattr_list
	depends embox.security.smac
}

module sock_noxattr extends sock_xattr_api {
	source "socket/sock_noxattr.h"
}

module neighbour {
	option string log_level="LOG_NONE"
	option number neighbour_amount=10
	option number neighbour_attempt=3
	option number neighbour_expire=60000
	option number neighbour_resend=1000
	option number neighbour_tmr_freq=1000

	source "neighbour.c"

	depends embox.compat.posix.util.time /* for time() */
	depends embox.mem.pool
	@NoRuntime depends embox.net.arp
	@NoRuntime depends embox.net.ndp
}

module packet {
	source "packet.c"
}

module net_pack {
	source "net_pack.c"

	@NoRuntime depends embox.lib.libds
}
