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.

64 lines
1.4 KiB

  1. /*
  2. * Node.h
  3. *
  4. * Created on: 10.01.2017
  5. * Author: piotrek
  6. */
  7. #ifndef NODE_H_
  8. #define NODE_H_
  9. #include "common.h"
  10. #include "Packet.h"
  11. #include "Log.h"
  12. typedef struct {
  13. string ip;
  14. string mask;
  15. string network;
  16. string gatewayIp;
  17. } NetConf;
  18. class Node : public Log
  19. {
  20. private:
  21. queue<Packet>rcvBuffer; // kolejka z pakietami do przetworzenia
  22. map<Node*, bool> connectedNodes; // referencje do węzłów, z którymi jest podłączony
  23. NetConf netConf; // konfiguracja sieciowa
  24. string hostname; // nazwa węzła
  25. void setNetwork();
  26. protected:
  27. Node * findConnection(string ip);
  28. Packet recv();
  29. string ipToString(unsigned int ip);
  30. unsigned int stringToIp(string ip);
  31. string calculateNetwork(string ip, string mask);
  32. public:
  33. Node();
  34. Node(string hostname);
  35. Node(string hostname, string ip, string mask);
  36. Node(string hostname, string ip, string mask, string gatewayIp);
  37. virtual ~Node();
  38. bool connectNode(Node *node, bool isExternal = false, bool firstConnected = false);
  39. bool send(Packet packet, bool isRouter = false);
  40. void putPacket(Packet packet);
  41. // settery
  42. void setHostname(string hostname);
  43. void setIp(string ip);
  44. void setMask(string mask);
  45. void setGatewayIp(string gatewayIp);
  46. // gettery
  47. string getHostname();
  48. string getIp();
  49. string getMask();
  50. string getNetwork();
  51. string getGatewayIp();
  52. virtual void onRecv(); // wirtualna metoda na odbiór i dalszą akcję
  53. };
  54. #endif /* NODE_H_ */