Symulacja NAT na przedmiot Symulacje Komputerowe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.1 KiB

  1. /*
  2. * NATRouter.h
  3. *
  4. * Created on: 11-01-2017
  5. * Author: Piotr Dergun
  6. */
  7. #ifndef NATROUTER_H_
  8. #define NATROUTER_H_
  9. #include "common.h"
  10. #include "Node.h"
  11. #include "NATItem.h"
  12. class NATRouter : public Node
  13. {
  14. NATItem *natTable = NULL; // tablica z zaalokowanymi portami na zewnątrz
  15. map<string, int> natHelper; // mapa pomocnicza pozwalajaca szybko znalezc wpis
  16. NetConf netWanConf; // konfiguracja sieciowa na zewnątrz
  17. void initalizeNatTable();
  18. int getFreePort();
  19. int lastUsedPort = 0;
  20. int getAllocatedPort(string srcIp, int srcPort);
  21. void sNAT(Packet *packet);
  22. void dNAT(Packet *packet);
  23. void setWanNetwork();
  24. public:
  25. NATRouter();
  26. NATRouter(string hostname);
  27. NATRouter(string hostname, string ip, string mask);
  28. NATRouter(string hostname, string ip, string mask, string gatewayIp);
  29. ~NATRouter();
  30. virtual void onRecv();
  31. void freePorts();
  32. // settery
  33. void setWanIp(string wanIp);
  34. void setWanMask(string wanMask);
  35. void setWanGatewayIp(string wanGatewayIp);
  36. // gettery
  37. string getWanIp();
  38. string getWanMask();
  39. string getWanNetwork();
  40. string getWanGatewayIp();
  41. };
  42. #define NAT_TABLE_LEN 65536
  43. #endif /* NATROUTER_H_ */