10 void expand_domain_search(struct packet *packet);
16 struct option_data option;
21 p.options[DHO_DOMAIN_SEARCH] = option;
25 expand_domain_search(&p);
27 if (p.options[DHO_DOMAIN_SEARCH].len != 0 ||
28 p.options[DHO_DOMAIN_SEARCH].data != NULL)
37 struct option_data *option;
39 char *data = "\007example\003org\0";
40 char *expected = "example.org.";
42 option = &p.options[DHO_DOMAIN_SEARCH];
44 option->data = malloc(option->len);
45 memcpy(option->data, data, option->len);
49 expand_domain_search(&p);
51 if (option->len != strlen(expected) ||
52 strcmp(option->data, expected) != 0)
59 one_domain_truncated1()
62 struct option_data *option;
65 char *data = "\007example\003org";
67 option = &p.options[DHO_DOMAIN_SEARCH];
69 option->data = malloc(option->len);
70 memcpy(option->data, data, option->len);
74 expand_domain_search(&p);
83 one_domain_truncated2()
86 struct option_data *option;
89 char *data = "\007ex";
91 option = &p.options[DHO_DOMAIN_SEARCH];
93 option->data = malloc(option->len);
94 memcpy(option->data, data, option->len);
98 expand_domain_search(&p);
111 struct option_data *option;
113 char *data = "\007example\003org\0\007example\003com\0";
114 char *expected = "example.org. example.com.";
116 option = &p.options[DHO_DOMAIN_SEARCH];
118 option->data = malloc(option->len);
119 memcpy(option->data, data, option->len);
123 expand_domain_search(&p);
125 if (option->len != strlen(expected) ||
126 strcmp(option->data, expected) != 0)
133 two_domains_truncated1()
136 struct option_data *option;
139 char *data = "\007example\003org\0\007example\003com";
141 option = &p.options[DHO_DOMAIN_SEARCH];
143 option->data = malloc(option->len);
144 memcpy(option->data, data, option->len);
148 expand_domain_search(&p);
157 two_domains_truncated2()
160 struct option_data *option;
163 char *data = "\007example\003org\0\007ex";
165 option = &p.options[DHO_DOMAIN_SEARCH];
167 option->data = malloc(option->len);
168 memcpy(option->data, data, option->len);
172 expand_domain_search(&p);
181 two_domains_compressed()
185 struct option_data *option;
187 char *data = "\007example\003org\0\006foobar\xc0\x08";
188 char *expected = "example.org. foobar.org.";
190 option = &p.options[DHO_DOMAIN_SEARCH];
192 option->data = malloc(option->len);
193 memcpy(option->data, data, option->len);
197 expand_domain_search(&p);
199 if (option->len != strlen(expected) ||
200 strcmp(option->data, expected) != 0)
207 two_domains_infloop()
211 struct option_data *option;
213 char *data = "\007example\003org\0\006foobar\xc0\x0d";
215 option = &p.options[DHO_DOMAIN_SEARCH];
217 option->data = malloc(option->len);
218 memcpy(option->data, data, option->len);
222 expand_domain_search(&p);
231 two_domains_forwardptr()
235 struct option_data *option;
237 char *data = "\007example\003org\xc0\x0d\006foobar\0";
239 option = &p.options[DHO_DOMAIN_SEARCH];
241 option->data = malloc(option->len);
242 memcpy(option->data, data, option->len);
246 expand_domain_search(&p);
255 two_domains_truncatedptr()
259 struct option_data *option;
261 char *data = "\007example\003org\0\006foobar\xc0";
263 option = &p.options[DHO_DOMAIN_SEARCH];
265 option->data = malloc(option->len);
266 memcpy(option->data, data, option->len);
270 expand_domain_search(&p);
279 multiple_domains_valid()
283 struct option_data *option;
286 "\007example\003org\0\002cl\006foobar\003com\0\002fr\xc0\x10";
288 char *expected = "example.org. cl.foobar.com. fr.foobar.com.";
290 option = &p.options[DHO_DOMAIN_SEARCH];
292 option->data = malloc(option->len);
293 memcpy(option->data, data, option->len);
297 expand_domain_search(&p);
299 if (option->len != strlen(expected) ||
300 strcmp(option->data, expected) != 0)
307 main(int argc, char *argv[])
313 one_domain_truncated1();
314 one_domain_truncated2();
317 two_domains_truncated1();
318 two_domains_truncated2();
320 two_domains_compressed();
321 two_domains_infloop();
322 two_domains_forwardptr();
323 two_domains_truncatedptr();
325 multiple_domains_valid();