String avpType = AvpDictionary.INSTANCE.getAvp(avp.getCode(), avp.getVendorId()).getType(); avpValue = avp.getInteger32(); avpValue = avp.getUnsigned32(); avpValue = avp.getFloat64(); avpValue = avp.getInteger64(); avpValue = avp.getTime(); avpValue = avp.getUnsigned64(); avpValue = avp.getUTF8String().replaceAll("\r", "").replaceAll("\n", ""); avpValue = avp.getUTF8String().replaceAll("\r", "").replaceAll("\n", ""); avpStringSB.append("| ").append(indent).append("AVP: Code[").append(avp.getCode()).append("] VendorID[").append(avp.getVendorId()).append("] Value[").append(avpValue). append("] Flags[V=").append(avp.isVendorId()).append(";M=").append(avp.isMandatory()).append(";P=").append(avp.isEncrypted()).append("]\r\n"); for (Avp subAvp : avp.getGrouped()) { avpStringSB.append(printAvp(subAvp, indent + " "));
public static DiameterIdentity getAvpAsDiameterIdentity(int avpCode, AvpSet set) { try { Avp avp = set.getAvp(avpCode); return avp != null ? new DiameterIdentity(avp.getDiameterIdentity()) : null; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " as type OctetString.", e); } return null; } }
private Object getValue(AvpType type, Avp avp) throws AvpDataException { switch (type) { case Integer32: case Enumerated: return avp.getInteger32(); case Unsigned32: return avp.getUnsigned32(); case Unsigned64: case Integer64: return avp.getInteger64(); case Float32: return avp.getFloat32(); case Float64: return avp.getFloat64(); case OctetString: case Address: case Time: case DiameterIdentity: case DiameterURI: case IPFilterRule: case QoSFilterRule: return avp.getOctetString(); case UTF8String: return avp.getUTF8String(); } return null; }
@Override public Avp getAvp(int avpCode, long vendorId) { for (Avp avp : this.avps) { if (avp.getCode() == avpCode && avp.getVendorId() == vendorId) { return avp; } } return null; }
AvpImpl(Avp avp) { avpCode = avp.getCode(); vendorID = avp.getVendorId(); isMandatory = avp.isMandatory(); isEncrypted = avp.isEncrypted(); isVendorSpecific = avp.isVendorId(); try { rawData = avp.getRaw(); if (rawData == null || rawData.length == 0) { groupedData = avp.getGrouped(); } } catch (AvpDataException e) { logger.debug("Can not create Avp", e); } }
public static long[] getAvpsAsUnsigned32(int avpCode, AvpSet set) { try { AvpSet avpSet = set.getAvps(avpCode); long[] values = new long[avpSet.size()]; int i = 0; for(Avp avp : avpSet) { values[i++] = avp.getUnsigned32(); } return values; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " as type Unsigned32.", e); } return new long[0]; } }
AvpSet authAppId = avpSet.getAvps(Avp.AUTH_APPLICATION_ID); for (Avp anAuthAppId : authAppId) { rc.add(ApplicationId.createByAuthAppId((anAuthAppId).getInteger32())); rc.add(ApplicationId.createByAccAppId((anAccAppId).getInteger32())); AvpSet avps = (aSpecAppId).getGrouped(); for (Avp localAvp : avps) { if (localAvp.getCode() == Avp.VENDOR_ID) { vendorId = localAvp.getUnsigned32(); if (localAvp.getCode() == Avp.AUTH_APPLICATION_ID) { authApplicationId = localAvp.getUnsigned32(); if (localAvp.getCode() == Avp.ACCT_APPLICATION_ID) { acctApplicationId = localAvp.getUnsigned32();
private boolean isSuccess(IMessage message) throws AvpDataException { Avp resultAvp = message.getResultCode(); if (resultAvp == null) { resultAvp = message.getAvps().getAvp(Avp.EXPERIMENTAL_RESULT); if (resultAvp == null) { // bad message, ignore if (logger.isDebugEnabled()) { logger.debug("Discarding message since SSL handshake has not been performed on [{}], dropped message [{}]. No result type avp.", socketDescription, message); } // TODO: anything else? return false; } resultAvp = resultAvp.getGrouped().getAvp(Avp.EXPERIMENTAL_RESULT_CODE); if (resultAvp == null) { // bad message, ignore if (logger.isDebugEnabled()) { logger.debug("Discarding message since SSL handshake has not been performed on [{}], dropped message [{}]. No result avp.", socketDescription, message); } } } long resultCode = resultAvp.getUnsigned32(); return resultCode >= 2000 && resultCode < 3000; }
public static String getAvpAsUTF8String(int avpCode, AvpSet set) { try { Avp avp = set.getAvp(avpCode); return avp != null ? avp.getUTF8String() : null; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " as type UTF8String.", e); } return null; } }
private DiameterAvp[] getAvpsInternal(AvpSet set) throws Exception { List<DiameterAvp> avps = new ArrayList<DiameterAvp>(); for (Avp a : set) { AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if (avpRep == null) { //log.error("Avp with code: " + a.getCode() + " VendorId: " + a.getVendorId() + " is not listed in dictionary, skipping!"); continue; } else { if (avpRep.getType().equals("Grouped")) { // TODO: There's no info about if AVP has mandatory or protected flags set... GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw()); gAVP.setExtensionAvps(getAvpsInternal(a.getGrouped())); // This is a grouped AVP... let's make it like that. avps.add(gAVP); } else { // TODO: There's no info about if AVP has mandatory or protected flags set... avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), avpRep.getRuleMandatoryAsInt(), avpRep.getRuleProtectedAsInt(), a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); } } } return avps.toArray(new DiameterAvp[avps.size()]); }
private void addRoutingInfo(MessageImpl request) { for (Avp a :request.getAvps()) { if (a.getCode() == Avp.ORIGIN_HOST) { try { routingInfo[0] = a.getDiameterIdentity(); if (routingInfo[1] != null) { return; } } catch (AvpDataException e) { logger.error("Unable to read Origin-Host AVP value for storing Routing Info", e); } } else if (a.getCode() == Avp.ORIGIN_REALM) { try { routingInfo[1] = a.getDiameterIdentity(); if (routingInfo[0] != null) { return; } } catch (AvpDataException e) { logger.error("Unable to read Origin-Realm AVP value for storing Routing Info", e); } } } }
@Override public boolean hasSoftwareVersion() { Avp terminalInfoAvp = super.message.getAvps().getAvp(Avp.TERMINAL_INFORMATION); if (terminalInfoAvp != null) { try { return terminalInfoAvp.getGrouped().getAvp(Avp.SOFTWARE_VERSION) != null; } catch (AvpDataException ex) { logger.debug("Failure trying to obtain (Terminal-Information) Software-Version AVP value", ex); } } return false; }
@Override public String getSoftwareVersion() { Avp terminalInfoAvp = super.message.getAvps().getAvp(Avp.TERMINAL_INFORMATION); if (terminalInfoAvp != null) { try { Avp softwareVersion = terminalInfoAvp.getGrouped().getAvp(Avp.SOFTWARE_VERSION); if (softwareVersion != null) { return softwareVersion.getUTF8String(); } } catch (AvpDataException ex) { logger.debug("Failure trying to obtain (Terminal-Information) Software-Version AVP value", ex); } } return null; }
public static float getAvpAsFloat32(int avpCode, long vendorId, AvpSet set) { try { Avp avp = set.getAvp(avpCode, vendorId); return avp != null ? avp.getFloat32() : Float.MIN_VALUE; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " and Vendor-Id " + vendorId + " as type Float32.", e); } return Float.MIN_VALUE; } }
@Override public byte[] getTgpp2MEID() { Avp terminalInfoAvp = super.message.getAvps().getAvp(Avp.TERMINAL_INFORMATION); if (terminalInfoAvp != null) { try { Avp meid = terminalInfoAvp.getGrouped().getAvp(Avp.TGPP2_MEID); if (meid != null) { return meid.getOctetString(); } } catch (AvpDataException ex) { logger.debug("Failure trying to obtain (Terminal-Information) MEID AVP value", ex); } } return null; }
public static double getAvpAsFloat64(int avpCode, long vendorId, AvpSet set) { try { Avp avp = set.getAvp(avpCode, vendorId); return avp != null ? avp.getFloat64() : Double.MIN_VALUE; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " and Vendor-Id " + vendorId + " as type Float64.", e); } return Double.MIN_VALUE; } }
@Override public Avp getAvp(int avpCode) { for (Avp avp : this.avps) { if (avp.getCode() == avpCode) { return avp; } } return null; }
@Override public long getAuthApplicationId() throws AvpDataException { Avp authApplicationIdAvp = message.getAvps().getAvp(AUTH_APPLICATION_ID); if (authApplicationIdAvp != null) { return authApplicationIdAvp.getUnsigned32(); } else { throw new AvpDataException("Avp AUTH_APPLICATION_ID not found"); } }
AvpRepresentation avpRep = AvpDictionary.INSTANCE.getAvp(a.getCode(), a.getVendorId()); if(avpRep != null) { if(avpRep.isGrouped()) { AvpSet grouped = a.getGrouped(); // warning, this changes getRaw to return byte[0] if successful GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), DiameterAvpType.fromString(avpRep.getType()))); AvpSet grouped = a.getGrouped(); // warning, this changes getRaw to return byte[0] if successful GroupedAvpImpl gAVP = new GroupedAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw()); avps.add(new DiameterAvpImpl(a.getCode(), a.getVendorId(), a.isMandatory() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.isEncrypted() ? DiameterAvp.FLAG_RULE_MUST : DiameterAvp.FLAG_RULE_MUSTNOT, a.getRaw(), null));
public static String getAvpAsUTF8String(int avpCode, long vendorId, AvpSet set) { try { Avp avp = set.getAvp(avpCode, vendorId); return avp != null ? avp.getUTF8String() : null; } catch (AvpDataException e) { if(logger.isDebugEnabled()) { logger.debug("Failed to obtain AVP with code " + avpCode + " and Vendor-Id " + vendorId + " as type UTF8String.", e); } return null; } }