68 lines
1.4 KiB
C
68 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 2015 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
#ifndef __ZPERF_SESSION_H
|
|
#define __ZPERF_SESSION_H
|
|
|
|
#include <zephyr/linker/sections.h>
|
|
#include <zephyr/toolchain.h>
|
|
|
|
#include <zephyr/zephyr.h>
|
|
#include <zephyr/sys/printk.h>
|
|
|
|
#include <zephyr/net/net_ip.h>
|
|
#include <zephyr/net/net_core.h>
|
|
|
|
#include "zperf.h"
|
|
#include "zperf_internal.h"
|
|
#include "shell_utils.h"
|
|
|
|
/* Type definition */
|
|
enum state {
|
|
STATE_NULL, /* Session has not yet started */
|
|
STATE_ONGOING, /* 1st packet has been received, last packet not yet */
|
|
STATE_LAST_PACKET_RECEIVED, /* Last packet has been received */
|
|
STATE_COMPLETED /* Session completed, stats pkt can be sent if needed */
|
|
};
|
|
|
|
enum session_proto {
|
|
SESSION_UDP = 0,
|
|
SESSION_TCP = 1,
|
|
SESSION_PROTO_END
|
|
};
|
|
|
|
struct session {
|
|
/* Tuple for UDP */
|
|
uint16_t port;
|
|
struct net_addr ip;
|
|
|
|
/* TCP session */
|
|
int sock;
|
|
|
|
enum state state;
|
|
|
|
/* Stat data */
|
|
uint32_t counter;
|
|
uint32_t next_id;
|
|
uint32_t outorder;
|
|
uint32_t error;
|
|
uint64_t length;
|
|
int64_t start_time;
|
|
uint32_t last_time;
|
|
int32_t jitter;
|
|
int32_t last_transit_time;
|
|
|
|
/* Stats packet*/
|
|
struct zperf_server_hdr stat;
|
|
};
|
|
|
|
struct session *get_session(const struct sockaddr *addr,
|
|
enum session_proto proto);
|
|
struct session *get_tcp_session(int sock);
|
|
void zperf_session_init(void);
|
|
void zperf_reset_session_stats(struct session *session);
|
|
|
|
#endif /* __ZPERF_SESSION_H */
|