Skip to content

Commit

Permalink
always use standard separator for comments and mac vendords, but repl…
Browse files Browse the repository at this point in the history
…ace it with user-defined separator for display
  • Loading branch information
angryziber committed Jan 25, 2021
1 parent 7b30d6e commit 6f479e1
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 11 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Unreleased:
- Upgrade SWT for all platforms
- Fix resolving of MAC vendors if MAC separator is changed
- Fix resolving of MAC vendors and Comments if MAC separator is changed to non-standard

Changes in 3.7.4:
- Allow changing of MAC address separator (many tools use "-" instead of ":") #261
Expand Down
6 changes: 4 additions & 2 deletions src/net/azib/ipscan/fetchers/CommentFetcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@ public String getId() {

public Object scan(ScanningSubject subject) {
String mac = (String) subject.getParameter(MACFetcher.ID);
if (mac == null && (subject.getAddress().isSiteLocalAddress() || subject.getAddress().isLinkLocalAddress()))
mac = macFetcher.scan(subject);
if (mac == null && (subject.getAddress().isSiteLocalAddress() || subject.getAddress().isLinkLocalAddress())) {
macFetcher.scan(subject);
mac = (String) subject.getParameter(MACFetcher.ID);
}
return commentsConfig.getComment(subject.getAddress(), mac);
}
}
10 changes: 7 additions & 3 deletions src/net/azib/ipscan/fetchers/MACFetcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public abstract class MACFetcher extends AbstractFetcher {
String mac = (String) subject.getParameter(ID);
if (mac == null) mac = resolveMAC(subject.getAddress());
subject.setParameter(ID, mac);
return mac;
return replaceSeparator(mac);
}

protected abstract String resolveMAC(InetAddress address);
Expand All @@ -30,12 +30,16 @@ String bytesToMAC(byte[] bytes) {
StringBuilder mac = new StringBuilder();
for (byte b : bytes) mac.append(String.format("%02X", b)).append(":");
if (mac.length() > 0) mac.deleteCharAt(mac.length()-1);
return mac.toString().replace(":", separator);
return mac.toString();
}

String extractMAC(String line) {
Matcher m = macAddressPattern.matcher(line);
return m.find() ? addLeadingZeroes(m.group().toUpperCase()).replace(":", separator) : null;
return m.find() ? addLeadingZeroes(m.group().toUpperCase()) : null;
}

String replaceSeparator(String mac) {
return mac.replace(":", separator);
}

private static String addLeadingZeroes(String mac) {
Expand Down
7 changes: 5 additions & 2 deletions src/net/azib/ipscan/fetchers/MACVendorFetcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,14 @@ public void init() {
@Override
public Object scan(ScanningSubject subject) {
String mac = (String)subject.getParameter(MACFetcher.ID);
if (mac == null) mac = macFetcher.scan(subject);
if (mac == null) {
macFetcher.scan(subject);
mac = (String) subject.getParameter(MACFetcher.ID);
}
return mac != null ? findMACVendor(mac) : null;
}

String findMACVendor(String mac) {
return vendors.get(mac.replace(macFetcher.separator, "").substring(0, 6));
return vendors.get(mac.replace(":", "").substring(0, 6));
}
}
3 changes: 0 additions & 3 deletions test/net/azib/ipscan/fetchers/MACVendorFetcherTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,5 @@ public void findMACVendor() {
fetcher.init();
assertEquals("XEROX", fetcher.findMACVendor("00:00:01:00:00:00"));
assertEquals("Nokia", fetcher.findMACVendor("FC:E5:57:11:22:33"));

macFetcher.separator = "-";
assertEquals("Nokia", fetcher.findMACVendor("FC-E5-57-11-22-33"));
}
}

0 comments on commit 6f479e1

Please sign in to comment.