Added IPv6 interface IDs to the 'Format MAC address' operation

This commit is contained in:
n1474335 2018-02-21 11:24:38 +00:00
parent 79a3128491
commit 8cef6db482
2 changed files with 21 additions and 1 deletions

View File

@ -1825,6 +1825,11 @@ const OperationConfig = {
name: "Cisco style", name: "Cisco style",
type: "boolean", type: "boolean",
value: MAC.CISCO_STYLE value: MAC.CISCO_STYLE
},
{
name: "IPv6 interface ID",
type: "boolean",
value: MAC.IPV6_INTERFACE_ID
} }
] ]
}, },

View File

@ -34,6 +34,11 @@ const MAC = {
* @default * @default
*/ */
CISCO_STYLE: false, CISCO_STYLE: false,
/**
* @constant
* @default
*/
IPV6_INTERFACE_ID: false,
/** /**
* Format MAC addresses operation. * Format MAC addresses operation.
@ -50,6 +55,7 @@ const MAC = {
dashDelim = args[2], dashDelim = args[2],
colonDelim = args[3], colonDelim = args[3],
ciscoStyle = args[4], ciscoStyle = args[4],
ipv6IntID = args[5],
outputList = [], outputList = [],
macs = input.toLowerCase().split(/[,\s\r\n]+/); macs = input.toLowerCase().split(/[,\s\r\n]+/);
@ -57,23 +63,32 @@ const MAC = {
let cleanMac = mac.replace(/[:.-]+/g, ""), let cleanMac = mac.replace(/[:.-]+/g, ""),
macHyphen = cleanMac.replace(/(.{2}(?=.))/g, "$1-"), macHyphen = cleanMac.replace(/(.{2}(?=.))/g, "$1-"),
macColon = 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 (outputCase === "Lower only") {
if (noDelim) outputList.push(cleanMac); if (noDelim) outputList.push(cleanMac);
if (dashDelim) outputList.push(macHyphen); if (dashDelim) outputList.push(macHyphen);
if (colonDelim) outputList.push(macColon); if (colonDelim) outputList.push(macColon);
if (ciscoStyle) outputList.push(macCisco); if (ciscoStyle) outputList.push(macCisco);
if (ipv6IntID) outputList.push(macIPv6);
} else if (outputCase === "Upper only") { } else if (outputCase === "Upper only") {
if (noDelim) outputList.push(cleanMac.toUpperCase()); if (noDelim) outputList.push(cleanMac.toUpperCase());
if (dashDelim) outputList.push(macHyphen.toUpperCase()); if (dashDelim) outputList.push(macHyphen.toUpperCase());
if (colonDelim) outputList.push(macColon.toUpperCase()); if (colonDelim) outputList.push(macColon.toUpperCase());
if (ciscoStyle) outputList.push(macCisco.toUpperCase()); if (ciscoStyle) outputList.push(macCisco.toUpperCase());
if (ipv6IntID) outputList.push(macIPv6.toUpperCase());
} else { } else {
if (noDelim) outputList.push(cleanMac, cleanMac.toUpperCase()); if (noDelim) outputList.push(cleanMac, cleanMac.toUpperCase());
if (dashDelim) outputList.push(macHyphen, macHyphen.toUpperCase()); if (dashDelim) outputList.push(macHyphen, macHyphen.toUpperCase());
if (colonDelim) outputList.push(macColon, macColon.toUpperCase()); if (colonDelim) outputList.push(macColon, macColon.toUpperCase());
if (ciscoStyle) outputList.push(macCisco, macCisco.toUpperCase()); if (ciscoStyle) outputList.push(macCisco, macCisco.toUpperCase());
if (ipv6IntID) outputList.push(macIPv6, macIPv6.toUpperCase());
} }
outputList.push( outputList.push(