/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * CidrFrame.java * * Created on Mar 28, 2011, 7:41:51 PM */ package org.openstack.atlas.util.cidr.gui; import java.security.NoSuchAlgorithmException; import org.openstack.atlas.util.cidr.validate.ValidateType; import org.openstack.atlas.util.cidr.validate.ValidateVersion; import org.openstack.atlas.util.cidr.validate.IpValidator; import org.openstack.atlas.util.ip.ByteStreamOperation; import org.openstack.atlas.util.ip.IPUtils; import org.openstack.atlas.util.ip.IPv4Cidr; import org.openstack.atlas.util.ip.IPv6Cidr; import org.openstack.atlas.util.ip.IPv4; import org.openstack.atlas.util.ip.IPv6; import org.openstack.atlas.util.ip.exception.AccountUnHashableException; import org.openstack.atlas.util.ip.exception.IPException; import org.openstack.atlas.util.ip.exception.IPStringConversionException; import org.openstack.atlas.util.ip.exception.IpTypeMissMatchException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class CidrFrame extends javax.swing.JFrame { private IPv6 ipv6 = new IPv6("::"); /** Creates new form CidrFrame */ public CidrFrame() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { CidrListPanel = new javax.swing.JPanel(); CidrLabel = new javax.swing.JLabel(); cidrField = new javax.swing.JTextField(); ipAddressLabel = new javax.swing.JLabel(); ipAddressField = new javax.swing.JTextField(); isContainedButton = new javax.swing.JButton(); ipRangeField = new javax.swing.JButton(); validateButton = new javax.swing.JButton(); ResultsPanel = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); resultsTextArea = new javax.swing.JTextArea(); ClearTextButton = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); clusterCidrField = new javax.swing.JTextField(); accountIdField = new javax.swing.JTextField(); vipNumField = new javax.swing.JTextField(); ipv6Field = new javax.swing.JTextField(); ClusterCidrButton = new javax.swing.JButton(); accountIdButton = new javax.swing.JButton(); vipNumButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Silly CIDR Block Toy"); setBackground(new java.awt.Color(200, 200, 200)); setForeground(java.awt.Color.gray); CidrListPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("IP Validation Crap")); CidrListPanel.setName("cidrPanel"); // NOI18N CidrLabel.setText("Cidr Blocks"); ipAddressLabel.setText("IpAddress"); isContainedButton.setText("isContained"); isContainedButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { isContainedButtonActionPerformed(evt); } }); ipRangeField.setText("ipRange"); ipRangeField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ipRangeFieldActionPerformed(evt); } }); validateButton.setText("Validate ipAddress"); validateButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { validateButtonActionPerformed(evt); } }); javax.swing.GroupLayout CidrListPanelLayout = new javax.swing.GroupLayout(CidrListPanel); CidrListPanel.setLayout(CidrListPanelLayout); CidrListPanelLayout.setHorizontalGroup( CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CidrListPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CidrListPanelLayout.createSequentialGroup() .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(ipAddressLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(CidrLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(ipAddressField, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE) .addComponent(cidrField, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE))) .addGroup(CidrListPanelLayout.createSequentialGroup() .addComponent(isContainedButton, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ipRangeField, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(validateButton, javax.swing.GroupLayout.PREFERRED_SIZE, 162, Short.MAX_VALUE))) .addContainerGap()) ); CidrListPanelLayout.setVerticalGroup( CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(CidrListPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(CidrLabel) .addComponent(cidrField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(ipAddressLabel) .addComponent(ipAddressField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(CidrListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(isContainedButton) .addComponent(ipRangeField) .addComponent(validateButton)) .addContainerGap(33, Short.MAX_VALUE)) ); ResultsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Results")); resultsTextArea.setColumns(20); resultsTextArea.setEditable(false); resultsTextArea.setFont(new java.awt.Font("DejaVu Sans Mono", 1, 10)); resultsTextArea.setRows(5); resultsTextArea.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jScrollPane1.setViewportView(resultsTextArea); ClearTextButton.setLabel("Clear Text"); ClearTextButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ClearTextButtonActionPerformed(evt); } }); javax.swing.GroupLayout ResultsPanelLayout = new javax.swing.GroupLayout(ResultsPanel); ResultsPanel.setLayout(ResultsPanelLayout); ResultsPanelLayout.setHorizontalGroup( ResultsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ResultsPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(ResultsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 837, Short.MAX_VALUE) .addComponent(ClearTextButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); ResultsPanelLayout.setVerticalGroup( ResultsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(ResultsPanelLayout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ClearTextButton) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("IPv6 Crap")); ipv6Field.setEditable(false); ipv6Field.setFont(new java.awt.Font("DejaVu Sans Mono", 1, 13)); ipv6Field.setText("0000:0000:0000:0000:0000:0000:0000:0000"); ipv6Field.setBorder(javax.swing.BorderFactory.createEtchedBorder()); ClusterCidrButton.setText("Cluster Cidr"); ClusterCidrButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ClusterCidrButtonActionPerformed(evt); } }); accountIdButton.setText("AccountId"); accountIdButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { accountIdButtonActionPerformed(evt); } }); vipNumButton.setText("VipOctets"); vipNumButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { vipNumButtonActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(ClusterCidrButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE) .addComponent(accountIdButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE) .addComponent(vipNumButton, javax.swing.GroupLayout.DEFAULT_SIZE, 135, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(vipNumField) .addComponent(clusterCidrField) .addComponent(accountIdField, javax.swing.GroupLayout.DEFAULT_SIZE, 216, Short.MAX_VALUE))) .addComponent(ipv6Field, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(clusterCidrField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ClusterCidrButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(accountIdField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(accountIdButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(vipNumField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(vipNumButton)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(ipv6Field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(ResultsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(CidrListPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(CidrListPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addComponent(ResultsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-902)/2, (screenSize.height-781)/2, 902, 781); }// </editor-fold>//GEN-END:initComponents private void isContainedButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_isContainedButtonActionPerformed List<IPv6Cidr> ipv6CidrList = new ArrayList<IPv6Cidr>(); List<IPv4Cidr> ipv4CidrList = new ArrayList<IPv4Cidr>(); String cidrStr = this.cidrField.getText(); String ipStr = this.ipAddressField.getText(); String msg; String format; String trimedBlock; if (cidrStr == null) { msg = String.format("Nothing entered for cidr blocks\nCan not proceed"); this.resultsTextArea.append(msg); return; } if (ipStr == null) { msg = String.format("Nothing entered for ipAddress\nCan not proceed"); this.resultsTextArea.append(msg); return; } for (String cidrBlock : cidrStr.split(",")) { trimedBlock = cidrBlock.trim(); if (IPUtils.isValidIpv4Subnet(trimedBlock)) { try { ipv4CidrList.add(new IPv4Cidr(trimedBlock)); } catch (IPException ex) { msg = String.format("%s was not a valid ipv4 block\n", trimedBlock); continue; } } else if (IPUtils.isValidIpv6Subnet(trimedBlock)) { try { ipv6CidrList.add(new IPv6Cidr(trimedBlock)); } catch (IPException ex) { msg = String.format("%s was not a valid ipv6 block\n", trimedBlock); this.resultsTextArea.append(trimedBlock); continue; } } else { format = "cidrBlock %s is not valid ipv4 or ipv6 skipping\n"; msg = String.format(format, trimedBlock); this.resultsTextArea.append(trimedBlock); continue; } } if (IPUtils.isValidIpv4String(ipStr)) { for (IPv4Cidr cidr : ipv4CidrList) { try { msg = (cidr.contains(ipStr)) ? String.format("%s INSIDE %s\n", ipStr, cidr.getCidr()) : String.format("%s OUTSIDE %s\n", ipStr, cidr.getCidr()); this.resultsTextArea.append(msg); } catch (IPException ex) { msg = String.format("ip %s was not a valid ipv4 address\n", ipStr); this.resultsTextArea.append(msg); return; } } } else if (IPUtils.isValidIpv6String(ipStr)) { for (IPv6Cidr cidr : ipv6CidrList) { try { msg = (cidr.contains(ipStr)) ? String.format("%s INSIDE %s\n", ipStr, cidr.getCidr()) : String.format("%s OUTSIDE in %s\n", ipStr, cidr.getCidr()); this.resultsTextArea.append(msg); } catch (IPException ex) { msg = String.format("ip %s was not a valid ipv6 address\n", ipStr); this.resultsTextArea.append(msg); return; } } } else { format = "ip %s was neither a valid IPv4 address or IPv6 Address. " + "Cannnot continue\n"; msg = String.format(format, ipStr); this.resultsTextArea.append(msg); } }//GEN-LAST:event_isContainedButtonActionPerformed private void ClearTextButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ClearTextButtonActionPerformed this.resultsTextArea.setText(""); }//GEN-LAST:event_ClearTextButtonActionPerformed private void ipRangeFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ipRangeFieldActionPerformed String ipInput = this.cidrField.getText(); String loIp; String hiIp; String cidrTrimed; String range; String msg; for (String cidrBlock : ipInput.split(",")) { cidrTrimed = cidrBlock.trim(); loIp = getLoIp(cidrTrimed); hiIp = getHiIp(cidrTrimed); if ((loIp == null) || (hiIp == null)) { range = "UNKNOWN do to an invalid cidrBloc\n"; msg = String.format("%s: %s\n\n", cidrTrimed, range); } msg = String.format("%s:\n Lo=%s\n HI=%s\n\n", cidrTrimed, loIp, hiIp); this.resultsTextArea.append(msg); } }//GEN-LAST:event_ipRangeFieldActionPerformed private void validateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_validateButtonActionPerformed List<IpValidator> validatorList = new ArrayList<IpValidator>(); String validStr; String ip; ip = ipAddressField.getText(); if(ip==null) { ip = "Null"; } validatorList.add(new IpValidator(ValidateType.IP, ValidateVersion.IPV4)); validatorList.add(new IpValidator(ValidateType.SUBNET, ValidateVersion.IPV4)); validatorList.add(new IpValidator(ValidateType.IP, ValidateVersion.IPV6)); validatorList.add(new IpValidator(ValidateType.SUBNET, ValidateVersion.IPV6)); for(IpValidator ipvalidator : validatorList) { validStr = ipvalidator.getValidateResultStringNoExcept(ip); resultsTextArea.append(validStr); } }//GEN-LAST:event_validateButtonActionPerformed private void ClusterCidrButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ClusterCidrButtonActionPerformed IPv6Cidr ipv6Cidr; String ipExpanded; try { ipv6Cidr = new IPv6Cidr(clusterCidrField.getText()); } catch (IPStringConversionException ex) { resultsTextArea.append("Cluster is not a valid IPv6 Cidr block\n"); return; } try { ipv6.setClusterPartition(ipv6Cidr); } catch (IPStringConversionException ex) { resultsTextArea.append("Unable to set Cluster parition\n"); return; } displayIpv6(ipv6); }//GEN-LAST:event_ClusterCidrButtonActionPerformed private void accountIdButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_accountIdButtonActionPerformed int accountId; try{ accountId = Integer.parseInt(accountIdField.getText()); }catch(NumberFormatException ex){ resultsTextArea.append(String.format("Could not convert '%s' to Integer\n",accountIdField.getText())); return; } try { ipv6.setAccountPartition(accountId); } catch (AccountUnHashableException ex) { resultsTextArea.append(String.format("sha1sum Algo must be missing or something NoSuchAlgorithmException caught\n")); return; } catch (IPStringConversionException ex) { resultsTextArea.append(String.format("ip '%s' must not be a valid IPv6 address can not set account hash\n",ipv6.getString())); return; } displayIpv6(ipv6); }//GEN-LAST:event_accountIdButtonActionPerformed private void vipNumButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vipNumButtonActionPerformed int vipNum; try{ vipNum = Integer.parseInt(vipNumField.getText()); }catch(NumberFormatException ex){ resultsTextArea.append(String.format("Could not convert '%s' to Integer\n",accountIdField.getText())); return; } try { ipv6.setVipOctets(vipNum); } catch (IPStringConversionException ex) { resultsTextArea.append(String.format("ip '%s' must not be a valid IPv6 address can not set account hash\n",ipv6.getString())); return; } displayIpv6(ipv6); }//GEN-LAST:event_vipNumButtonActionPerformed private void displayIpv6(IPv6 ip) { String ipStr; try { ipStr = ip.expand(); } catch (IPStringConversionException ex) { resultsTextArea.append(String.format("Could not expand '%s'\n",ip.getString())); return; } ipv6Field.setText(ipStr); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new CidrFrame().setVisible(true); } }); } private String getHiIp(String ipBlock) { byte[] maskBytes; byte[] ipBytes; byte[] ipCalcBytes; String ipOut; IPv4Cidr ipv4Cidr; IPv6Cidr ipv6Cidr; if (IPUtils.isValidIpv4Subnet(ipBlock)) { try { ipv4Cidr = new IPv4Cidr(ipBlock); ipBytes = ipv4Cidr.getIpBytes(); maskBytes = ipv4Cidr.getMaskBytes(); maskBytes = IPUtils.invBytes(maskBytes); ipCalcBytes = IPUtils.opBytes(ipBytes, maskBytes, ByteStreamOperation.OR); ipOut = new IPv4(ipCalcBytes).getString(); return ipOut; } catch (IPException ex) { return null; } } else if (IPUtils.isValidIpv6Subnet(ipBlock)) { try { ipv6Cidr = new IPv6Cidr(ipBlock); ipBytes = ipv6Cidr.getIpBytes(); maskBytes = ipv6Cidr.getMaskBytes(); maskBytes = IPUtils.invBytes(maskBytes); ipCalcBytes = IPUtils.opBytes(ipBytes, maskBytes, ByteStreamOperation.OR); ipOut = new IPv6(ipCalcBytes).getString(); return ipOut; } catch (IPException ex) { return null; } } else { return null; } } private String getLoIp(String ipBlock) { byte[] maskBytes; byte[] ipBytes; byte[] ipCalcBytes; String ipOut; IPv4Cidr ipv4Cidr; IPv6Cidr ipv6Cidr; if (IPUtils.isValidIpv4Subnet(ipBlock)) { try { ipv4Cidr = new IPv4Cidr(ipBlock); ipBytes = ipv4Cidr.getIpBytes(); maskBytes = ipv4Cidr.getMaskBytes(); ipCalcBytes = IPUtils.opBytes(ipBytes, maskBytes, ByteStreamOperation.AND); ipOut = new IPv4(ipCalcBytes).getString(); return ipOut; } catch (IPException ex) { return null; } } else if (IPUtils.isValidIpv6Subnet(ipBlock)) { try { ipv6Cidr = new IPv6Cidr(ipBlock); ipBytes = ipv6Cidr.getIpBytes(); maskBytes = ipv6Cidr.getMaskBytes(); ipCalcBytes = IPUtils.opBytes(ipBytes, maskBytes, ByteStreamOperation.AND); ipOut = new IPv6(ipCalcBytes).getString(); return ipOut; } catch (IPException ex) { return null; } } else { return null; } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel CidrLabel; private javax.swing.JPanel CidrListPanel; private javax.swing.JButton ClearTextButton; private javax.swing.JButton ClusterCidrButton; private javax.swing.JPanel ResultsPanel; private javax.swing.JButton accountIdButton; private javax.swing.JTextField accountIdField; private javax.swing.JTextField cidrField; private javax.swing.JTextField clusterCidrField; private javax.swing.JTextField ipAddressField; private javax.swing.JLabel ipAddressLabel; private javax.swing.JButton ipRangeField; private javax.swing.JTextField ipv6Field; private javax.swing.JButton isContainedButton; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea resultsTextArea; private javax.swing.JButton validateButton; private javax.swing.JButton vipNumButton; private javax.swing.JTextField vipNumField; // End of variables declaration//GEN-END:variables }