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.

66 lines
1.5 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. void split(const string &s, char delim, vector<string> &elems);
  33. vector<string> split(const string &s, char delim);
  34. public:
  35. Node();
  36. Node(string hostname);
  37. Node(string hostname, string ip, string mask);
  38. Node(string hostname, string ip, string mask, string gatewayIp);
  39. virtual ~Node();
  40. bool connectNode(Node *node, bool isExternal = false, bool firstConnected = false);
  41. int send(Packet packet, bool isRouter = false);
  42. void putPacket(Packet packet);
  43. // settery
  44. void setHostname(string hostname);
  45. void setIp(string ip);
  46. void setMask(string mask);
  47. void setGatewayIp(string gatewayIp);
  48. // gettery
  49. string getHostname();
  50. string getIp();
  51. string getMask();
  52. string getNetwork();
  53. string getGatewayIp();
  54. virtual void onRecv(); // wirtualna metoda na odbiór i dalszą akcję
  55. };
  56. #endif /* NODE_H_ */