#include “upf_init.h”
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <sys/socket.h>
#include “utlt_lib.h”
#include “utlt_debug.h”
#include “utlt_buff.h”
#include “utlt_thread.h”
#include “utlt_timer.h”
#include “utlt_network.h”
#include “upf_context.h”
#include “upf_config.h”
#include “up/up_path.h”
#include “n4/n4_pfcp_path.h”
#include “pfcp_xact.h”
#include “updk/env.h”
#include “updk/init.h”
static Status SignalRegister(void *data);
static Status ConfigHandle(void *data);
static Status EpollInit(void *data);
static Status EpollTerm(void *data);
static Status EventQueueInit(void *data);
static Status EventQueueTerm(void *data);
static Status PacketRecvThreadInit(void *data);
static Status PacketRecvThreadTerm(void *data);
static Status Gtpv1Init(void *data);
static Status Gtpv1Term(void *data);
static Status PfcpInit(void *data);
static Status PfcpTerm(void *data);
void PacketReceiverThread(ThreadID id, void *data);
/*************
静态全局变量 默认的配置文件路径
***************/
static char configFilePath[MAX_FILE_PATH_STRLEN] = “./config/upfcfg.yaml”;
/*************
upf_init.h中定义的upf初始化和结束操作结构体
分别包括:
缓冲区分配BufblkPoolInit
线程初始化ThreadInit
定时器初始化TimerPoolInit
socket初始化SockPoolInit
UPF上下文初始化UpfContextInit
UPF处理的信号初始化SignalRegister
UPF配置文件路径初始化ConfigHandle
epoll初始化EpollInit
(是一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。
IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。)
UPF事件队列初始化EventQueueInit
UPF数据接收线程初始化PacketRecvThreadInit
UPF运行环境初始化Gtpv1Init
UPF N4接口 PFCP初始化PfcpInit
UPF路由配置初始化UpRouteInit
UPF缓冲区server初始化BufferServerInit
***************/
UpfOps UpfOpsList[] = {
{
.name = “Library - Bufblk Pool”,
.init = BufblkPoolInit,
.initData = NULL,
.term = BufblkPoolFinal,
.termData = NULL,
},
{
.name = "Library - Thread",
.init = ThreadInit,
.initData = NULL,
.term = ThreadFinal,
.termData = NULL,
},
{
.name = "Library - Timer Pool",
.init = TimerPoolInit,
.initData = NULL,
.term = TimerFinal,
.termData = NULL,
},
{
.name = "Library - Socket Pool",
.init = SockPoolInit,
.initData = NULL,
.term = SockPoolFinal,
.termData = NULL,
},
{
.name = "UPF - Context",
.init = UpfContextInit,
.initData = NULL,
.term = UpfContextTerminate,
.termData = NULL,
},
{
.name = "UPF - Signal Registration",
.init = SignalRegister,
.initData = NULL,
.term = NULL,
.termData = NULL,
},
{
.name = "UPF - Config Handle",
.init = ConfigHandle,
.initData = &configFilePath,
.ter