summaryrefslogtreecommitdiff
path: root/common/include/utils.h
diff options
context:
space:
mode:
authorliuchang <[email protected]>2023-03-22 02:20:43 +0000
committerliuchang <[email protected]>2023-03-22 02:20:43 +0000
commit0f8b9ba46a16e63670ba21750dd3963edfc23b5d (patch)
tree4be63ca3a87762a7d13e17262da61a4e6eb114b0 /common/include/utils.h
parentf48b403acc34f72df2679636e7c047c862045c5a (diff)
add project code
Diffstat (limited to 'common/include/utils.h')
-rw-r--r--common/include/utils.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/common/include/utils.h b/common/include/utils.h
new file mode 100644
index 0000000..a94dde3
--- /dev/null
+++ b/common/include/utils.h
@@ -0,0 +1,94 @@
+#ifndef _UTILS_H
+#define _UTILS_H
+
+#ifdef __cpluscplus
+extern "C"
+{
+#endif
+
+#define MIN(a, b) ((a) > (b) ? (b) : (a))
+
+#define LOG_TAG_SHAPING "SHAPING"
+#define LOG_TAG_SWARMKV "SWARMKV"
+#define LOG_TAG_MAAT "MAAT"
+#define LOG_TAG_MARSIO "MARSIO"
+#define LOG_TAG_UTILS "UTILS"
+#define LOG_TAG_RAWPKT "RAW_PACKET"
+#define LOG_TAG_CTRLPKT "CTRL_PACKET"
+#define LOG_TAG_STABLE "SESSION_TABLE"
+
+/******************************************************************************
+ * fixed_num_array
+ ******************************************************************************/
+
+struct fixed_num_array
+{
+ int elems[128];
+ int num;
+ int size;
+};
+
+void fixed_num_array_init(struct fixed_num_array *array);
+void fixed_num_array_add_elem(struct fixed_num_array *array, int elem);
+void fixed_num_array_del_elem(struct fixed_num_array *array, int elem);
+int fixed_num_array_is_full(struct fixed_num_array *array);
+int fixed_num_array_count_elem(struct fixed_num_array *array);
+int fixed_num_array_exist_elem(struct fixed_num_array *array, int elem);
+int fixed_num_array_index_elem(struct fixed_num_array *array, int index);
+
+/******************************************************************************
+ * sids
+ ******************************************************************************/
+
+#include <marsio.h>
+
+struct sids
+{
+ int num;
+ sid_t elems[MR_SID_LIST_MAXLEN];
+};
+
+void sids_write_once(struct sids *dst, struct sids *src);
+void sids_copy(struct sids *dst, struct sids *src);
+
+/******************************************************************************
+ * throughput_metrics
+ ******************************************************************************/
+
+struct throughput_metrics
+{
+ uint64_t n_pkts;
+ uint64_t n_bytes;
+};
+
+void throughput_metrics_inc(struct throughput_metrics *iterm, uint64_t n_pkts, uint64_t n_bytes);
+
+/******************************************************************************
+ * protocol
+ ******************************************************************************/
+
+struct udp_hdr
+{
+ u_int16_t uh_sport; /* source port */
+ u_int16_t uh_dport; /* destination port */
+ u_int16_t uh_ulen; /* udp length */
+ u_int16_t uh_sum; /* udp checksum */
+} __attribute__((__packed__));
+
+void build_udp_header(const char *l3_hdr, int l3_hdr_len, struct udp_hdr *udp_hdr, u_int16_t udp_sport, u_int16_t udp_dport, int payload_len);
+void build_ip_header(struct ip *ip_hdr, u_int8_t next_protocol, const char *src_addr, const char *dst_addr, uint16_t payload_len);
+void build_ether_header(struct ethhdr *eth_hdr, uint16_t next_protocol, const char *src_mac, const char *dst_mac);
+
+/******************************************************************************
+ * device
+ ******************************************************************************/
+
+int get_ip_by_device_name(const char *dev_name, char *ip_buff);
+int get_mac_by_device_name(const char *dev_name, char *mac_buff);
+int str_to_mac(const char *str, char *mac_buff);
+
+#ifdef __cpluscplus
+}
+#endif
+
+#endif