From 8cef6db482c221418b9458966e84b7e678d89210 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Wed, 21 Feb 2018 11:24:38 +0000 Subject: [PATCH] Added IPv6 interface IDs to the 'Format MAC address' operation --- src/core/config/OperationConfig.js | 5 +++++ src/core/operations/MAC.js | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index 5c9760da..0f25a943 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -1825,6 +1825,11 @@ const OperationConfig = { name: "Cisco style", type: "boolean", value: MAC.CISCO_STYLE + }, + { + name: "IPv6 interface ID", + type: "boolean", + value: MAC.IPV6_INTERFACE_ID } ] }, diff --git a/src/core/operations/MAC.js b/src/core/operations/MAC.js index 4beb939f..b909287f 100755 --- a/src/core/operations/MAC.js +++ b/src/core/operations/MAC.js @@ -34,6 +34,11 @@ const MAC = { * @default */ CISCO_STYLE: false, + /** + * @constant + * @default + */ + IPV6_INTERFACE_ID: false, /** * Format MAC addresses operation. @@ -50,6 +55,7 @@ const MAC = { dashDelim = args[2], colonDelim = args[3], ciscoStyle = args[4], + ipv6IntID = args[5], outputList = [], macs = input.toLowerCase().split(/[,\s\r\n]+/); @@ -57,23 +63,32 @@ const MAC = { let cleanMac = mac.replace(/[:.-]+/g, ""), macHyphen = cleanMac.replace(/(.{2}(?=.))/g, "$1-"), macColon = cleanMac.replace(/(.{2}(?=.))/g, "$1:"), - macCisco = cleanMac.replace(/(.{4}(?=.))/g, "$1."); + macCisco = cleanMac.replace(/(.{4}(?=.))/g, "$1."), + macIPv6 = cleanMac.slice(0, 6) + "fffe" + cleanMac.slice(6); + + macIPv6 = macIPv6.replace(/(.{4}(?=.))/g, "$1:"); + let bite = parseInt(macIPv6.slice(0, 2), 16) ^ 2; + bite = bite.toString(16).padStart(2, "0"); + macIPv6 = bite + macIPv6.slice(2); if (outputCase === "Lower only") { if (noDelim) outputList.push(cleanMac); if (dashDelim) outputList.push(macHyphen); if (colonDelim) outputList.push(macColon); if (ciscoStyle) outputList.push(macCisco); + if (ipv6IntID) outputList.push(macIPv6); } else if (outputCase === "Upper only") { if (noDelim) outputList.push(cleanMac.toUpperCase()); if (dashDelim) outputList.push(macHyphen.toUpperCase()); if (colonDelim) outputList.push(macColon.toUpperCase()); if (ciscoStyle) outputList.push(macCisco.toUpperCase()); + if (ipv6IntID) outputList.push(macIPv6.toUpperCase()); } else { if (noDelim) outputList.push(cleanMac, cleanMac.toUpperCase()); if (dashDelim) outputList.push(macHyphen, macHyphen.toUpperCase()); if (colonDelim) outputList.push(macColon, macColon.toUpperCase()); if (ciscoStyle) outputList.push(macCisco, macCisco.toUpperCase()); + if (ipv6IntID) outputList.push(macIPv6, macIPv6.toUpperCase()); } outputList.push(