blob: 3830b9a56a3e1b382cb8d370e4355d560ab61a62 [file] [log] [blame]
/*
* Copyright (c) 2016 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _NETZ_H_
#define _NETZ_H_
#include <net/ip_buf.h>
#include <net/net_core.h>
#include "app_buf.h"
struct __deprecated netz_ctx_t;
struct netz_ctx_t {
struct net_context *net_ctx;
int connected;
int rx_timeout;
int tx_retry_timeout;
struct net_addr host;
int host_port;
struct net_addr remote;
int remote_port;
enum ip_protocol proto;
};
#define TCP_COMMON_TIMEOUT 20
/**
* @brief NETZ_CTX_INIT Initializes a netz context with default values
*/
#define NETZ_CTX_INIT { .rx_timeout = TCP_COMMON_TIMEOUT, \
.tx_retry_timeout = TCP_COMMON_TIMEOUT, \
.net_ctx = NULL, \
.connected = 0, \
.proto = IPPROTO_UDP, \
.host_port = 0, \
.remote_port = 0}
/**
* @brief NET_ADDR_IPV4_INIT Initializes a net_addr structure with
* an IPv4 address specified by a1, a2, a3 and a4
*/
#define NET_ADDR_IPV4_INIT(a1, a2, a3, a4) {.in_addr.in4_u.u4_addr8[0] = (a1),\
.in_addr.in4_u.u4_addr8[1] = (a2),\
.in_addr.in4_u.u4_addr8[2] = (a3),\
.in_addr.in4_u.u4_addr8[3] = (a4),\
.family = AF_INET}
/**
* @brief netz_host Sets the host IPv4 address (no IPv6 support)
* @param ctx netz context structure
* @param host Network address
*/
void __deprecated netz_host(struct netz_ctx_t *ctx, struct net_addr *host);
/**
* @brief netz_host_ipv4 Sets the host IPv4 address (no IPv6 support)
* @param ctx netz context structure
* @param a1 Byte 0 of the IPv4 address
* @param a2 Byte 1 of the IPv4 address
* @param a3 Byte 2 of the IPv4 address
* @param a4 Byte 3 of the IPv4 address
*/
void __deprecated netz_host_ipv4(struct netz_ctx_t *ctx, uint8_t a1,
uint8_t a2, uint8_t a3, uint8_t a4);
/**
* @brief netz_netmask Sets the host's netmask address
* @param ctx netz context structure
* @param netmask Network address to be used as netmask
*/
void __deprecated netz_netmask(struct netz_ctx_t *ctx,
struct net_addr *netmask);
/**
* @brief netz_netmask_ipv4 Sets the host's netmask IPv4 address
* @param ctx netz context structure
* @param n1 Byte 0 of the IPv4 address
* @param n2 Byte 1 of the IPv4 address
* @param n3 Byte 2 of the IPv4 address
* @param n4 Byte 3 of the IPv4 address
*/
void __deprecated netz_netmask_ipv4(struct netz_ctx_t *ctx, uint8_t n1,
uint8_t n2, uint8_t n3, uint8_t n4);
/**
* @brief netz_remote Sets the address of the remote peer
* @param ctx netz context structure
* @param remote Network address of the remote peer
* @param port Port number of the remote peer
*/
void __deprecated netz_remote(struct netz_ctx_t *ctx, struct net_addr *remote,
int port);
/**
* @brief netz_remote_ipv4 Sets the IPv4 address of the remote peer
* @param ctx netz context structure
* @param a1 Byte 0 of the IPv4 address
* @param a2 Byte 1 of the IPv4 address
* @param a3 Byte 2 of the IPv4 address
* @param a4 Byte 3 of the IPv4 address
*/
void __deprecated netz_remote_ipv4(struct netz_ctx_t *ctx, uint8_t a1,
uint8_t a2, uint8_t a3, uint8_t a4,
int port);
/**
* @brief netz_tcp Initializes the netz context & connects
* to the remote peer
* @param ctx netz context structure
* @return 0 on success
* @return -EINVAL if a null context was obtained
* @return Read netz_tx return codes
*/
int __deprecated netz_tcp(struct netz_ctx_t *ctx);
/**
* @brief netz_udp Initializes the context for UDP transfers
* @param ctx netz context structure
* @return 0 on success
* @return -EINVAL if a null context was obtained
*/
int __deprecated netz_udp(struct netz_ctx_t *ctx);
/**
* @brief netz_tx TCP/UDP data transmission
* @param ctx netz context structure
* @param buf Buffer that contains the data to be sent
* @return 0 on success
* @return -EINVAL if no network buffer is available
* @return -EIO if a TCP error was detected
*/
int __deprecated netz_tx(struct netz_ctx_t *ctx, struct app_buf_t *buf);
/**
* @brief netz_rx TCP/UDP data reception
* @param ctx netz context structure
* @param buf Buffer that contains the received data
* @return 0 on success
* @return -EIO on TCP or network buffer error
* @return -ENOMEM if the space in buf is not enough
* to store the received data
*/
int __deprecated netz_rx(struct netz_ctx_t *ctx, struct app_buf_t *buf);
#endif