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.

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