module_udp.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * ZMap Copyright 2013 Regents of the University of Michigan
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy
  6. * of the License at http://www.apache.org/licenses/LICENSE-2.0
  7. */
  8. #include <stdlib.h>
  9. #include <stdio.h>
  10. #include <stdint.h>
  11. #include <unistd.h>
  12. #include <string.h>
  13. typedef enum udp_payload_field_type
  14. {
  15. UDP_DATA,
  16. UDP_SADDR_N, UDP_SADDR_A, UDP_DADDR_N, UDP_DADDR_A,
  17. UDP_SPORT_N, UDP_SPORT_A, UDP_DPORT_N, UDP_DPORT_A,
  18. UDP_RAND_BYTE,
  19. UDP_RAND_DIGIT,
  20. UDP_RAND_ALPHA,
  21. UDP_RAND_ALPHANUM
  22. } udp_payload_field_type_t;
  23. typedef struct udp_payload_field_type_def {
  24. const char *name;
  25. const char *desc;
  26. udp_payload_field_type_t ftype;
  27. } udp_payload_field_type_def_t;
  28. typedef struct udp_payload_field
  29. {
  30. enum udp_payload_field_type ftype;
  31. unsigned int length;
  32. char *data;
  33. } udp_payload_field_t;
  34. typedef struct udp_payload_template
  35. {
  36. unsigned int fcount;
  37. struct udp_payload_field **fields;
  38. } udp_payload_template_t;
  39. typedef struct udp_payload_output
  40. {
  41. int length;
  42. char *data;
  43. } udp_payload_output_t;
  44. void udp_print_packet(FILE *fp, void* packet);
  45. int udp_make_packet(void *buf, ipaddr_n_t src_ip, ipaddr_n_t dst_ip,
  46. uint32_t *validation, int probe_num, void *arg);
  47. int udp_validate_packet(const struct ip *ip_hdr, uint32_t len,
  48. __attribute__((unused))uint32_t *src_ip, uint32_t *validation);
  49. extern const char *udp_unreach_strings[];
  50. int udp_global_initialize(struct state_conf *conf);
  51. int udp_global_cleanup(__attribute__((unused)) struct state_conf *zconf,
  52. __attribute__((unused)) struct state_send *zsend,
  53. __attribute__((unused)) struct state_recv *zrecv);
  54. void udp_set_num_ports(int x);
  55. void udp_template_add_field(udp_payload_template_t *t,
  56. udp_payload_field_type_t ftype, unsigned int length, char *data);
  57. void udp_template_free(udp_payload_template_t *t);
  58. int udp_template_build(udp_payload_template_t *t, char *out, unsigned int len, struct ip *ip_hdr, struct udphdr *udp_hdr, aesrand_t *aes);
  59. int udp_template_field_lookup(char *vname, udp_payload_field_t *c);
  60. udp_payload_template_t * udp_template_load(char *buf, unsigned int len);