For a question in forum this is a working example, there will be the example that is not working

Dependencies:   mbed

Fork of eth_v13 by Heiko Greiner

Committer:
hggerdd
Date:
Thu Mar 27 21:55:57 2014 +0000
Revision:
4:a10e3d1bdb17
Parent:
0:f7caac9b804e
working with wiznet w5100

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hggerdd 0:f7caac9b804e 1 #include "ipaddr.h"
hggerdd 0:f7caac9b804e 2
hggerdd 0:f7caac9b804e 3 using namespace std;
hggerdd 0:f7caac9b804e 4
hggerdd 0:f7caac9b804e 5 IpAddr::IpAddr()
hggerdd 0:f7caac9b804e 6 {
hggerdd 0:f7caac9b804e 7 m_ip[0] = 0;
hggerdd 0:f7caac9b804e 8 m_ip[1] = 0;
hggerdd 0:f7caac9b804e 9 m_ip[2] = 0;
hggerdd 0:f7caac9b804e 10 m_ip[3] = 0;
hggerdd 0:f7caac9b804e 11 }
hggerdd 0:f7caac9b804e 12
hggerdd 0:f7caac9b804e 13 IpAddr::IpAddr(uint8_t ip0, uint8_t ip1, uint8_t ip2, uint8_t ip3)
hggerdd 0:f7caac9b804e 14 {
hggerdd 0:f7caac9b804e 15 m_ip[0] = ip0;
hggerdd 0:f7caac9b804e 16 m_ip[1] = ip1;
hggerdd 0:f7caac9b804e 17 m_ip[2] = ip2;
hggerdd 0:f7caac9b804e 18 m_ip[3] = ip3;
hggerdd 0:f7caac9b804e 19 }
hggerdd 0:f7caac9b804e 20
hggerdd 0:f7caac9b804e 21 bool IpAddr::isNull()
hggerdd 0:f7caac9b804e 22 {
hggerdd 0:f7caac9b804e 23 if ( m_ip[0]==0 & m_ip[1]==0 & m_ip[2]==0 & m_ip[3]==0)
hggerdd 0:f7caac9b804e 24 return true;
hggerdd 0:f7caac9b804e 25 else
hggerdd 0:f7caac9b804e 26 return false;
hggerdd 0:f7caac9b804e 27 }
hggerdd 0:f7caac9b804e 28
hggerdd 0:f7caac9b804e 29 int IpAddr::getIpPart(uint8_t i)
hggerdd 0:f7caac9b804e 30 {
hggerdd 0:f7caac9b804e 31 return m_ip[i];
hggerdd 0:f7caac9b804e 32 }
hggerdd 0:f7caac9b804e 33
hggerdd 0:f7caac9b804e 34 bool IpAddr::isEqual(IpAddr *addr2)
hggerdd 0:f7caac9b804e 35 {
hggerdd 0:f7caac9b804e 36 if (this->getIpPart(0) != addr2->getIpPart(0)) return false;
hggerdd 0:f7caac9b804e 37 if (this->getIpPart(1) != addr2->getIpPart(1)) return false;
hggerdd 0:f7caac9b804e 38 if (this->getIpPart(2) != addr2->getIpPart(2)) return false;
hggerdd 0:f7caac9b804e 39 if (this->getIpPart(3) != addr2->getIpPart(3)) return false;
hggerdd 0:f7caac9b804e 40 return true;
hggerdd 0:f7caac9b804e 41 }
hggerdd 0:f7caac9b804e 42
hggerdd 0:f7caac9b804e 43 // liefert zurück, ob sich die gewählte und "addr2" im gleichen Subnetz befinden
hggerdd 0:f7caac9b804e 44 bool IpAddr::isSameSubnet(IpAddr * addr2, IpAddr * netmask)
hggerdd 0:f7caac9b804e 45 {
hggerdd 0:f7caac9b804e 46 int hv1, hv2;
hggerdd 0:f7caac9b804e 47
hggerdd 0:f7caac9b804e 48 for (int i=0; i<4; i++) {
hggerdd 0:f7caac9b804e 49 hv1 = ((this->getIpPart(i) & netmask->getIpPart(i)));
hggerdd 0:f7caac9b804e 50 hv2 = ((addr2->getIpPart(i) & netmask->getIpPart(i)));
hggerdd 0:f7caac9b804e 51 if (hv1 != hv2) return false;
hggerdd 0:f7caac9b804e 52 }
hggerdd 0:f7caac9b804e 53 return true;
hggerdd 0:f7caac9b804e 54 }
hggerdd 0:f7caac9b804e 55
hggerdd 0:f7caac9b804e 56 bool IpAddr::operator==(IpAddr * rhs)
hggerdd 0:f7caac9b804e 57 {
hggerdd 0:f7caac9b804e 58 for (int i=0; i<4; i++) {
hggerdd 0:f7caac9b804e 59 if ((this->getIpPart(i) != rhs->getIpPart(i))) return false;
hggerdd 0:f7caac9b804e 60 }
hggerdd 0:f7caac9b804e 61 return true;
hggerdd 0:f7caac9b804e 62 }
hggerdd 0:f7caac9b804e 63
hggerdd 0:f7caac9b804e 64 bool IpAddr::operator==(IpAddr & rhs)
hggerdd 0:f7caac9b804e 65 {
hggerdd 0:f7caac9b804e 66 for (int i=0; i<4; i++) {
hggerdd 0:f7caac9b804e 67 if ((this->getIpPart(i) != rhs.getIpPart(i))) return false;
hggerdd 0:f7caac9b804e 68 }
hggerdd 0:f7caac9b804e 69 return true;
hggerdd 0:f7caac9b804e 70 }
hggerdd 0:f7caac9b804e 71
hggerdd 0:f7caac9b804e 72
hggerdd 0:f7caac9b804e 73 void IpAddr::getIP(uint8_t * ip)
hggerdd 0:f7caac9b804e 74 {
hggerdd 0:f7caac9b804e 75 for(int i=0; i<4; i++) {
hggerdd 0:f7caac9b804e 76 ip[i] = m_ip[i];
hggerdd 0:f7caac9b804e 77 }
hggerdd 0:f7caac9b804e 78 }