6d73c66200a04223ae56a22ff221ec32193717a5vboxsync/* $Id$ */
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync/** @file
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync * VBoxPortForwardString
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync */
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync/*
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * Copyright (C) 2009-2010 Oracle Corporation
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync *
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * available from http://www.virtualbox.org. This file is free software;
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * General Public License (GPL) as published by the Free Software
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync */
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#ifndef ___VBoxPortForwardString_h___
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#define ___VBoxPortForwardString_h___
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#include <iprt/net.h>
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#include <VBox/intnet.h>
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsyncRT_C_DECLS_BEGIN
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#define PF_NAMELEN 64
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync/*
d5b5f09d8841828e647de9da5003fda55ca4cd5evboxsync * TBD: Here is shared implementation of parsing port-forward string
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * of format:
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * name:[ipv4 or ipv6 address]:host-port:[ipv4 or ipv6 guest addr]:guest port
d5b5f09d8841828e647de9da5003fda55ca4cd5evboxsync *
d5b5f09d8841828e647de9da5003fda55ca4cd5evboxsync * This code supposed to be used in NetService and Frontend and perhaps in corresponding
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * services.
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync *
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * Note: ports are in host format.
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync */
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsynctypedef struct PORTFORWARDRULE
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync{
b47ede7e57e074b8986a68e28d984d17639b6cd2vboxsync char szPfrName[PF_NAMELEN];
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync /* true if ipv6 and false otherwise */
b47ede7e57e074b8986a68e28d984d17639b6cd2vboxsync int fPfrIPv6;
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync /* IPPROTO_{UDP,TCP} */
b47ede7e57e074b8986a68e28d984d17639b6cd2vboxsync int iPfrProto;
b47ede7e57e074b8986a68e28d984d17639b6cd2vboxsync char szPfrHostAddr[INET6_ADDRSTRLEN];
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync uint16_t u16PfrHostPort;
b47ede7e57e074b8986a68e28d984d17639b6cd2vboxsync char szPfrGuestAddr[INET6_ADDRSTRLEN];
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync uint16_t u16PfrGuestPort;
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync} PORTFORWARDRULE, *PPORTFORWARDRULE;
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsyncint netPfStrToPf(const char *pcszStrPortForward,int fIPv6, PPORTFORWARDRULE pPfr);
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsyncRT_C_DECLS_END
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync#endif
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync