| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | /* * lwip_hook_ip4_input.c * *  Created on: 20.05.2019 *      Author: balbekova */#include "common_config.h"#if defined WHITELIST_ENABLE#include "lwip_hook_ip4_input.h"#include "ip4.h"#include "settings_api.h"#include "parameters.h"#ifdef PRINTF_STDLIB#include <stdio.h>#endif#ifdef PRINTF_CUSTOM#include "tinystdio.h"#endif#include <string.h>#include <stdlib.h>int ip_input_hook(struct pbuf *p, struct netif *inp){	bool flag = true;	struct ip_hdr *iphdr;	uint32_t mask_white_list;	uint32_t ip_white_list;	char str[20];	uint8_t len = 0;	iphdr = (struct ip_hdr *)p->payload;	for(uint8_t i = 0; i < MAX_WHITE_LIST; i ++){		memset(str, 0, 20);		GetWhiteListSTR(str, &len, i);		GetWhiteListMask(&mask_white_list, i);		GetWhiteListIP(&ip_white_list, i);		if(strlen(str) != 0){			if((iphdr->src.addr & mask_white_list) == (ip_white_list & mask_white_list)){				flag = true;				break;			}			else{				flag = false;			}		}	}	if(flag){		return 0;	}	else{		pbuf_free(p);		return 1;	}}#endif
 |