@Override protected void readReferral(SMBBuffer buffer, int referralStartPos) throws Buffer.BufferException { referralEntryFlags = 0; // Must be set to 0 for V2 buffer.readUInt32AsInt(); // Proximity (4 bytes) should be ignored ttl = buffer.readUInt32AsInt(); // TimeToLive (4 bytes) int dfsPathOffset = buffer.readUInt16(); // DFSPathOffset (2 bytes) int dfsAlternatePathOffset = buffer.readUInt16(); // DFSAlternatePathOffset (2 bytes) int networkAddressOffset = buffer.readUInt16(); // NetworkAddressOffset (2 bytes) dfsPath = readOffsettedString(buffer, referralStartPos, dfsPathOffset); dfsAlternatePath = readOffsettedString(buffer, referralStartPos, dfsAlternatePathOffset); path = readOffsettedString(buffer, referralStartPos, networkAddressOffset); }
static DFSReferral factory(SMBBuffer buffer) throws BufferException { int versionNumber = buffer.readUInt16(); buffer.rpos(buffer.rpos() - 2); // Reset to version number. switch (versionNumber) { case 1: return new DFSReferralV1().read(buffer); case 2: return new DFSReferralV2().read(buffer); case 3: case 4: return new DFSReferralV34().read(buffer); default: throw new IllegalArgumentException("Incorrect version number " + versionNumber + " while parsing DFS Referrals"); } }
static DFSReferral factory(SMBBuffer buffer) throws BufferException { int versionNumber = buffer.readUInt16(); buffer.rpos(buffer.rpos() - 2); // Reset to version number. switch (versionNumber) { case 1: return new DFSReferralV1().read(buffer); case 2: return new DFSReferralV2().read(buffer); case 3: case 4: return new DFSReferralV34().read(buffer); default: throw new IllegalArgumentException("Incorrect version number " + versionNumber + " while parsing DFS Referrals"); } }
@Override protected void readReferral(SMBBuffer buffer, int referralStartPos) throws Buffer.BufferException { referralEntryFlags = 0; // Must be set to 0 for V2 buffer.readUInt32AsInt(); // Proximity (4 bytes) should be ignored ttl = buffer.readUInt32AsInt(); // TimeToLive (4 bytes) int dfsPathOffset = buffer.readUInt16(); // DFSPathOffset (2 bytes) int dfsAlternatePathOffset = buffer.readUInt16(); // DFSAlternatePathOffset (2 bytes) int networkAddressOffset = buffer.readUInt16(); // NetworkAddressOffset (2 bytes) dfsPath = readOffsettedString(buffer, referralStartPos, dfsPathOffset); dfsAlternatePath = readOffsettedString(buffer, referralStartPos, dfsAlternatePathOffset); path = readOffsettedString(buffer, referralStartPos, networkAddressOffset); }