slirp_state.h revision cd0a67b2dd5f66f87aca9ad79dda62a2ce142817
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * NAT - slirp state/configuration.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * Copyright (C) 2006-2012 Oracle Corporation
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * available from http://www.virtualbox.org. This file is free software;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * you can redistribute it and/or modify it under the terms of the GNU
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * General Public License (GPL) as published by the Free Software
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync/** Where to start DHCP IP number allocation. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync/** DHCP Lease time. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * ARP cache this is naive implementaion of ARP
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * cache of mapping 4 byte IPv4 address to 6 byte
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsync * ethernet one.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync/** TFTP session entry. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /** host name to map.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * @note If pszCName isn't null pszPattern won't be used (see alias_dns.c for
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * details).
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /** Pattern (simple) of hostnames to map to the specified IP. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /** The IP Address. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /** List entry. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsynctypedef LIST_HEAD(DNSMAPPINGLISTHEAD, DNSMAPPINGENTRY) DNSMAPPINGLISTHEAD;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsyncLIST_HEAD(port_forward_rule_list, port_forward_rule);
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync/* forward declaration */
a7e61728d54a360d5825287e3b99b1661acdcddcvboxsync/** Main state/configuration structure for slirp NAT. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsynctypedef struct NATState
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync#define PROFILE_COUNTER(name, dsc) STAMPROFILE Stat ## name
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync#define COUNTING_COUNTER(name, dsc) STAMCOUNTER Stat ## name
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from boot.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from if.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from icmp.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from ip_input.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int maxnipq; /* Administrative limit on # of reass queues*/
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int maxfragsperpacket; /* Maximum number of IPv4 fragments allowed per packet */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from mbuf.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from slirp.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync ULONG (WINAPI * pfGetAdaptersAddresses)(ULONG, ULONG, PVOID, PIP_ADAPTER_ADDRESSES, PULONG);
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from tcp_input.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from tcp_timer.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from tftp.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* Stuff from udp.c */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* counter of sockets needed for allocation enough room to
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * process sockets with poll/epoll
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * NSOCK_INC/DEC should be injected before every
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * operation on socket queue (tcb, udb)
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync# define NSOCK_INC_EX(ex) do {ex->pData->nsock++;} while (0)
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync# define NSOCK_DEC_EX(ex) do {ex->pData->nsock--;} while (0)
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync# define NSOCK_INC() do {} while (0)
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync# define NSOCK_DEC() do {} while (0)
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync# define VBOX_SOCKET_EVENT (pData->phEvents[VBOX_SOCKET_EVENT_INDEX])
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int nmbclusters; /* limits number of mbuf clusters */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int nmbjumbop; /* limits number of page size jumbo clusters */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int nmbjumbo9; /* limits number of 9k jumbo clusters */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync int nmbjumbo16; /* limits number of 16k jumbo clusters */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * in (r89055) using of this behaviour has been changed and mean that Slirp
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * can't parse hosts strucutures/files to provide to guest host name-resolving
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * configuration, instead Slirp provides .{interface-number + 1}.3 as a nameserver
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * and proxies DNS queiries to Host's Name Resolver API.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * Flag whether using the host resolver mode is permanent
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync * because the user configured it that way.
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned int port;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long active_queries;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long all_queries;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long removed_queries;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long dropped_queries;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long answered_queries;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long dropped_answers;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long late_answers;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned long hash_collisions;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync unsigned short queryid;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* this field control behaviour of DHCP server */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync LIST_HEAD(handler_chain, proto_handler) handler_chain;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /** Critical R/W section to protect the handler chain list. */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync struct port_forward_rule_list port_forward_rule_head;
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* libalis modules' handlers*/
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* array of home addresses */
d1ae44110ca869b6cb4a708dc6d676e10f4167bavboxsync /* size of pInSockAddrHomeAddress in elements */
#ifndef VBOX_SLIRP_ALIAS
#define VBOX_X2(x) x
/* dnsproxy/dnsproxy.c */
/* dnsproxy/dnsproxy.c */
#include "ext.h"
#ifndef VBOX_SLIRP_BSD