Project

General

Profile

Bug #3288 » test.c

dexter, 05/24/2018 04:26 PM

 
1
#include <stdio.h>
2
#include <stdint.h>
3

    
4

    
5
struct ipcp_hdr {
6
	uint8_t code;
7
	uint8_t id;
8
	uint16_t len;
9
	uint8_t options[0];
10
};
11

    
12
enum ipcp_options {
13
	IPCP_OPT_IPADDR = 3,
14
	IPCP_OPT_PRIMARY_DNS = 129,
15
	IPCP_OPT_SECONDARY_DNS = 131,
16
};
17

    
18
struct ipcp_option_hdr {
19
	uint8_t type;
20
	uint8_t len;
21
	uint8_t data[0];
22
};
23

    
24
/* determine if IPCP contains given option */
25
static struct ipcp_option_hdr *ipcp_contains_option(struct ipcp_hdr *ipcp, enum ipcp_options opt)
26
{
27
	uint8_t *cur = ipcp->options;
28

    
29
	printf("ipcp->code=%x\n", ipcp->code);
30
	printf("ipcp->id=%x\n", ipcp->id);
31
	printf("ipcp->len=%x\n", ipcp->len);
32
	
33
	/* iterate over Options and check if protocol contained */
34
	while (cur + 2 <= ((uint8_t *)ipcp) + ipcp->len) {
35
		struct ipcp_option_hdr *cur_opt = (struct ipcp_option_hdr *) cur;
36
		printf("\n");
37
		printf("cur_opt->type=%x\n", cur_opt->type);
38
		printf("cur_opt->len=%x\n", cur_opt->len);
39
	
40
		if (cur_opt->type == opt)
41
			return cur_opt;
42
		cur += cur_opt->len;
43
	}
44
	return NULL;
45
}
46

    
47

    
48

    
49

    
50
void main(void)
51
{
52
	struct ipcp_hdr *ipcp;
53

    
54
	uint8_t pco_ipcp[] = {0x01, 0x5e, 0x00, 0x0a, 0x81, 0x06, 0x00, 0x00, 0x00, 0x00 };
55
	
56
	ipcp = (struct ipcp_hdr*) (pco_ipcp);  /* 2=type + 1=len */
57

    
58
	printf("Hello, ipcp\n");
59
	ipcp_contains_option(ipcp, IPCP_OPT_PRIMARY_DNS);
60
	printf("I am done!\n");
61

    
62

    
63
	
64
}
(1-1/3)
Add picture from clipboard (Maximum size: 48.8 MB)