Browse Source

Fix ICMP match.

Adam Ierymenko 9 years ago
parent
commit
4f3775bb86
1 changed files with 2 additions and 2 deletions
  1. 2 2
      node/Network.cpp

+ 2 - 2
node/Network.cpp

@@ -383,8 +383,8 @@ static _doZtFilterResult _doZtFilter(
 				break;
 				break;
 			case ZT_NETWORK_RULE_MATCH_ICMP:
 			case ZT_NETWORK_RULE_MATCH_ICMP:
 				if ((etherType == ZT_ETHERTYPE_IPV4)&&(frameLen >= 20)) {
 				if ((etherType == ZT_ETHERTYPE_IPV4)&&(frameLen >= 20)) {
-					if (frameData[9] == 0x01) {
-						const unsigned int ihl = (frameData[0] & 0xf) * 32;
+					if (frameData[9] == 0x01) { // IP protocol == ICMP
+						const unsigned int ihl = (frameData[0] & 0xf) * 4;
 						if (frameLen >= (ihl + 2)) {
 						if (frameLen >= (ihl + 2)) {
 							if (rules[rn].v.icmp.type == frameData[ihl]) {
 							if (rules[rn].v.icmp.type == frameData[ihl]) {
 								if ((rules[rn].v.icmp.flags & 0x01) != 0) {
 								if ((rules[rn].v.icmp.flags & 0x01) != 0) {