v0.0.3
This commit is contained in:
58
src/osfp.h
Normal file
58
src/osfp.h
Normal file
@@ -0,0 +1,58 @@
|
||||
#ifndef __OSFP_H__
|
||||
#define __OSFP_H__
|
||||
|
||||
#include <stddef.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/tcp.h>
|
||||
|
||||
#define OSFP_OS_CLASS_NAME_UNKNOWN "Unknown"
|
||||
#define OSFP_OS_CLASS_NAME_WINDOWS "Windows"
|
||||
#define OSFP_OS_CLASS_NAME_LINUX "Linux"
|
||||
#define OSFP_OS_CLASS_NAME_MAC_OS "Mac OS"
|
||||
#define OSFP_OS_CLASS_NAME_IOS "iOS"
|
||||
#define OSFP_OS_CLASS_NAME_ANDROID "Android"
|
||||
#define OSFP_OS_CLASS_NAME_OTHERS "Others"
|
||||
|
||||
enum osfp_os_class_id {
|
||||
OSFP_OS_CLASS_UNKNOWN,
|
||||
OSFP_OS_CLASS_WINDOWS,
|
||||
OSFP_OS_CLASS_LINUX,
|
||||
OSFP_OS_CLASS_MAC_OS,
|
||||
OSFP_OS_CLASS_IOS,
|
||||
OSFP_OS_CLASS_ANDROID,
|
||||
OSFP_OS_CLASS_OTHERS,
|
||||
OSFP_OS_CLASS_MAX,
|
||||
};
|
||||
|
||||
struct osfp_os_class_score {
|
||||
unsigned int scores[OSFP_OS_CLASS_MAX];
|
||||
};
|
||||
|
||||
struct osfp_result {
|
||||
char *json_str;
|
||||
|
||||
enum osfp_os_class_id likely_os_class;
|
||||
unsigned int likely_score;
|
||||
|
||||
struct osfp_os_class_score detail;
|
||||
};
|
||||
|
||||
struct osfp_db {
|
||||
char *db_json_path;
|
||||
void *score_db;
|
||||
};
|
||||
|
||||
struct osfp_db *osfp_db_new(const char *db_json_path);
|
||||
void osfp_db_free(struct osfp_db *db);
|
||||
|
||||
struct osfp_result *osfp_ipv4_identify(struct osfp_db *db, struct iphdr* l3_hdr, struct tcphdr *l4_hdr, size_t l4_hdr_len);
|
||||
struct osfp_result *osfp_ipv6_identify(struct osfp_db *db, struct ipv6hdr* l3_hdr, struct tcphdr *l4_hdr, size_t l4_hdr_len);
|
||||
|
||||
const char *osfp_result_os_name_get(struct osfp_result *result);
|
||||
char *osfp_result_score_detail_export(struct osfp_result *result);
|
||||
void osfp_result_free(struct osfp_result *result);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user