提交 86b15189 编写于 作者: D Dmitry Kozlov

preparation for DPDK intergation (part 4)

上级 2dbcda2b
#ifndef __AP_NET_H
#define __AP_NET_H
struct ap_net {
int (*socket)(int domain, int type, int proto);
int (*connect)(int sock, const struct sockaddr *, socklen_t len);
int (*bind)(int sock, const struct sockaddr *, socklen_t len);
int (*listen)(int sock, int backlog);
ssize_t (*recv)(int sock, void *buf, size_t len, int flags);
ssize_t (*recvfrom)(int sock, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
ssize_t (*send)(int sock, const void *buf, size_t len, int flags);
ssize_t (*sendto)(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
int (*set_nonblocking)(int sock, int f);
int (*setsockopt)(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
int (*ppp_open)();
int (*ppp_ioctl)(int fd, unsigned long request, void *arg);
int (*sock_ioctl)(unsigned long request, void *arg);
};
#endif
#ifndef __AP_SESSION_H__
#define __AP_SESSION_H__
#include "ap_net.h"
//#define AP_SESSIONID_LEN 16
#define AP_IFNAME_LEN 16
......@@ -36,22 +38,6 @@
struct ap_session;
struct backup_data;
struct rtnl_link_stats;
struct sockaddr;
struct ap_net {
int (*socket)(int domain, int type, int proto);
int (*connect)(int sock, const struct sockaddr *, socklen_t len);
int (*bind)(int sock, const struct sockaddr *, socklen_t len);
int (*listen)(int sock, int backlog);
ssize_t (*recv)(int sock, void *buf, size_t len, int flags);
ssize_t (*recvfrom)(int sock, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
ssize_t (*send)(int sock, const void *buf, size_t len, int flags);
ssize_t (*sendto)(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
int (*set_nonblocking)(int sock, int f);
int (*ppp_open)();
int (*ppp_ioctl)(int fd, unsigned long request, void *arg);
int (*sock_ioctl)(unsigned long request, void *arg);
};
struct ap_ctrl {
struct triton_context_t *ctx;
......
......@@ -4,7 +4,9 @@
#include "triton.h"
#include "ap_session.h"
#include "ap_net.h"
extern int sock_fd;
__export __thread const struct ap_net *net;
......@@ -53,6 +55,11 @@ static int def_set_nonblocking(int sock, int f)
return fcntl(sock, F_SETFL, O_NONBLOCK);
}
static int def_setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
{
return setsockopt(sock, level, optname, optval, optlen);
}
static int def_ppp_open()
{
return open("/dev/ppp", O_RDWR);
......@@ -78,6 +85,7 @@ __export const struct ap_net def_net = {
.send = def_send,
.sendto = def_sendto,
.set_nonblocking = def_set_nonblocking,
.setsockopt = def_setsockopt,
.ppp_open = def_ppp_open,
.ppp_ioctl = def_ppp_ioctl,
.sock_ioctl = def_sock_ioctl,
......
......@@ -8,7 +8,7 @@
#include <linux/if.h>
#include "triton.h"
#include "ap_session.h"
#include "ap_net.h"
#include "log.h"
#include "if_dpdk.h"
......@@ -311,6 +311,12 @@ static int dpdk_set_nonblocking(int sock, int f)
return 0;
}
static int dpdk_setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen)
{
return 0;
}
static int dpdk_ppp_open()
{
int id = MSG_PPP_OPEN;
......@@ -451,6 +457,7 @@ static const struct ap_net dpdk_net = {
.send = dpdk_send,
.sendto = dpdk_sendto,
.set_nonblocking = dpdk_set_nonblocking,
.setsockopt = dpdk_setsockopt,
.ppp_open = dpdk_ppp_open,
.ppp_ioctl = dpdk_ppp_ioctl,
.sock_ioctl = dpdk_sock_ioctl,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册