VSF Documented
vsf_socket.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_SOCKET_H__
19#define __VSF_SOCKET_H__
20
21/*============================ INCLUDES ======================================*/
22
24
25#if VSF_USE_TCPIP == ENABLED
26
29
30#undef PUBLIC_CONST
31#if defined(__VSF_SOCKET_CLASS_IMPLEMENT)
32#undef __VSF_SOCKET_CLASS_IMPLEMENT
33# define __VSF_CLASS_IMPLEMENT__
34# define PUBLIC_CONST
35#elif defined(__VSF_SOCKET_CLASS_INHERIT__)
36#undef __VSF_SOCKET_CLASS_INHERIT__
37# define __VSF_CLASS_INHERIT__
38# define PUBLIC_CONST
39#else
40# define PUBLIC_CONST const
41#endif
42
43#include "utilities/ooc_class.h"
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49/*============================ MACROS ========================================*/
50/*============================ MACROFIED FUNCTIONS ===========================*/
51/*============================ TYPES =========================================*/
52
53enum {
56};
57
58enum {
61};
62
65
66typedef enum vk_socket_feature_t {
67 VSF_SOCKET_THREAD = 1 << 0, // support thread mode
68 VSF_SOCKET_PEDA = 1 << 1, // support peda mode
69 // TODO: add more here
71
72typedef struct vk_socket_addr_t {
76
78 protected_member(
79 vk_socket_feature_t feature;
80 vsf_err_t (*socket)(vk_socket_t *socket, int family, int protocol);
82
84 vsf_err_t (*listen)(vk_socket_t *socket, int backlog);
85 vsf_err_t (*connect)(vk_socket_t *socket, const vk_socket_addr_t *remote_addr);
87 vsf_err_t (*send)(vk_socket_t *socket, const void *buf, size_t len, int flags,
88 const vk_socket_addr_t *remote_addr);
89 vsf_err_t (*recv)(vk_socket_t *socket, void *buf, size_t len, int flags,
90 const vk_socket_addr_t *remote_addr);
91
92 struct {
93 struct {
94 vsf_err_t (*gethostbyname)(const char *name, vk_netdrv_addr_t *addr);
95 } dns;
96 } protocols;
97 )
98};
99
101 public_member(
104};
105
106#undef PUBLIC_CONST
107
108/*============================ GLOBAL VARIABLES ==============================*/
109/*============================ PROTOTYPES ====================================*/
110
111extern vsf_err_t vk_socket_open(vk_socket_t *socket, int domain, int protocol);
113
115extern vsf_err_t vk_socket_listen(vk_socket_t *socket, int backlog);
118
119extern vsf_err_t vk_socket_send(vk_socket_t *socket, const void *buf, size_t len, int flags);
120extern vsf_err_t vk_socket_recv(vk_socket_t *socket, void *buf, size_t len, int flags);
121
122extern vsf_err_t vk_socket_sendto(vk_socket_t *socket, const void *buf, size_t len, int flags,
123 const vk_socket_addr_t *remote_addr);
124extern vsf_err_t vk_socket_recvfrom(vk_socket_t *socket, void *buf, size_t len, int flags,
125 const vk_socket_addr_t *remote_addr);
126
128extern vsf_err_t vk_dns_gethostbyname(const char *name, vk_netdrv_addr_t *addr);
129
130#ifdef __cplusplus
131}
132#endif
133
134/*============================ INCLUDES ======================================*/
135
136#if VSF_USE_LWIP == ENABLED
138#endif
139#if defined(__WIN__) && VSF_TCPIP_USE_WINSOCK == ENABLED
141#endif
142
143#endif // VSF_USE_TCPIP
144#endif // __VSF_NETDRV_H__
vsf_err_t
Definition __type.h:42
Definition vsf_socket.h:77
Definition vsf_socket.h:100
#define gethostbyname
Definition netdb.h:72
#define vsf_dcl_class
Definition ooc_class.h:46
#define vsf_class(__name)
Definition ooc_class.h:48
#define listen
Definition socket.h:100
#define accept
Definition socket.h:96
#define socket
Definition socket.h:108
#define connect
Definition socket.h:99
#define recv
Definition socket.h:101
#define bind
Definition socket.h:98
#define send
Definition socket.h:104
unsigned short uint16_t
Definition stdint.h:7
Definition vsf_netdrv.h:90
Definition vsf_socket.h:72
vk_netdrv_addr_t addr
Definition vsf_socket.h:74
uint16_t port
Definition vsf_socket.h:73
#define close
Definition unistd.h:120
vsf_err_t vk_dns_gethostbyname(const char *name, vk_netdrv_addr_t *addr)
Definition vsf_socket.c:176
vsf_err_t vk_socket_listen(vk_socket_t *socket, int backlog)
Definition vsf_socket.c:85
vsf_err_t vk_socket_recvfrom(vk_socket_t *socket, void *buf, size_t len, int flags, const vk_socket_addr_t *remote_addr)
Definition vsf_socket.c:158
vsf_err_t vk_socket_connect(vk_socket_t *socket, vk_socket_addr_t *remote_addr)
Definition vsf_socket.c:97
@ VSF_SOCKET_IPPROTO_UDP
Definition vsf_socket.h:60
@ VSF_SOCKET_IPPROTO_TCP
Definition vsf_socket.h:59
vsf_err_t vk_socket_bind(vk_socket_t *socket, vk_socket_addr_t *addr)
Definition vsf_socket.c:73
@ VSF_SOCKET_AF_INET6
Definition vsf_socket.h:55
@ VSF_SOCKET_AF_INET
Definition vsf_socket.h:54
vsf_err_t vk_socket_send(vk_socket_t *socket, const void *buf, size_t len, int flags)
Definition vsf_socket.c:121
vsf_err_t vk_socket_close(vk_socket_t *socket)
Definition vsf_socket.c:61
vsf_err_t vk_socket_sendto(vk_socket_t *socket, const void *buf, size_t len, int flags, const vk_socket_addr_t *remote_addr)
Definition vsf_socket.c:145
void vk_socket_set_default_op(vk_socket_op_t *op)
Definition vsf_socket.c:171
vsf_err_t vk_socket_open(vk_socket_t *socket, int domain, int protocol)
Definition vsf_socket.c:49
#define PUBLIC_CONST
Definition vsf_socket.h:40
vsf_err_t vk_socket_accept(vk_socket_t *socket, vk_socket_addr_t *remote_addr)
Definition vsf_socket.c:109
vk_socket_feature_t
Definition vsf_socket.h:66
@ VSF_SOCKET_PEDA
Definition vsf_socket.h:68
@ VSF_SOCKET_THREAD
Definition vsf_socket.h:67
vsf_err_t vk_socket_recv(vk_socket_t *socket, void *buf, size_t len, int flags)
Definition vsf_socket.c:133