/* SPDX-License-Identifier: LGPL-2.1-only OR BSD-3-Clause */
/******************************************************************************
 *
 * This file is provided under a dual license.  When you use or
 * distribute this software, you may choose to be licensed under
 * version 2.1 of the GNU Lesser General Public License
 * ("LGPLv2.1 License") or BSD License.
 *
 * LGPLv2.1 License
 *
 * Copyright(C) 2019 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of version 2.1 of the GNU Lesser General Public
 * License as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html for more
 * details.
 *
 * BSD LICENSE
 *
 * Copyright(C) 2019 MediaTek Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *  * Neither the name of the copyright holder nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *****************************************************************************/

/*----------------------------------------------------------------------------*/
/*! @file u_net_socket.h
 * $RCSfile: $
 * $Revision: #1 $
 * $Date: 2015/05/29 $
 * $Author: brianpc.huang $
 *
 * @par Description:
 *      network socket defines
 */
/*----------------------------------------------------------------------------*/
/*!
* @addtogroup  groupMW_INET
* @{
*/

#ifndef U_NET_SOCKET_H
#define U_NET_SOCKET_H

#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

#include <sys/types.h>
#include <sys/socket.h>
/*#include <sys/stat.h>*/
/*#include <sys/time.h>*/
#include <sys/select.h>
#include <sys/poll.h>

#include <arpa/inet.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netdb.h>

#include <unistd.h>
/*#include <fcntl.h>*/

#include <errno.h>

#define SOCK_EBADF             EBADFD  /* which SOCK_EBADF is our nucleus and EBADFD is linux define */
#define SOCK_EFAULT            EFAULT
#define SOCK_EINVAL            EINVAL
#define SOCK_EMFILE            EMFILE
#define SOCK_ENOPROTOOPT       ENOPROTOOPT
#define SOCK_EPROTONOSUPPORT   EPROTONOSUPPORT
#define SOCK_EOPNOTSUPP        EOPNOTSUPP
#define SOCK_EAFNOSUPPORT      EAFNOSUPPORT
#define SOCK_EADDRINUSE        EADDRINUSE
#define SOCK_EADDRNOTAVAIL     EADDRNOTAVAIL
#define SOCK_ECONNABORTED      ECONNABORTED
#define SOCK_ECONNRESET        ECONNRESET
#define SOCK_ENOBUFS           ENOBUFS
#define SOCK_EISCONN           EISCONN
#define SOCK_ENOTCONN          ENOTCONN
#define SOCK_ECONNREFUSED      ECONNREFUSED
#define SOCK_EHOSTUNREACH      EHOSTUNREACH
#define SOCK_ETIMEDOUT         ETIMEDOUT
#define SOCK_EWOULDBLOCK       EWOULDBLOCK /* EAGAIN */
#define SOCK_EINPROGRESS       EINPROGRESS
#define SOCK_EALREADY          EALREADY

#define SOCK_HOSTNOTFOUND      HOST_NOT_FOUND
#define SOCK_NORECOVERY        NO_RECOVERY
#define SOCK_NOMEMORY          ENOMEM

#endif

/*! @} */

