Skip to content

Commit

Permalink
restructured directories
Browse files Browse the repository at this point in the history
  • Loading branch information
compscidr committed Sep 19, 2024
1 parent ffef7d6 commit b35a75d
Show file tree
Hide file tree
Showing 23 changed files with 119 additions and 40 deletions.
4 changes: 3 additions & 1 deletion knet/src/main/kotlin/com/jasonernst/knet/ip/IpHeader.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.jasonernst.knet.ip

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.Ipv4Header.Companion.IP4_MIN_HEADER_LENGTH
import com.jasonernst.knet.ip.v4.Ipv4Header
import com.jasonernst.knet.ip.v4.Ipv4Header.Companion.IP4_MIN_HEADER_LENGTH
import com.jasonernst.knet.ip.v6.Ipv6Header
import org.slf4j.LoggerFactory
import java.net.Inet4Address
import java.net.Inet6Address
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v4

import com.jasonernst.icmp_common.Checksum
import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.IpHeader.Companion.IP4_VERSION
import com.jasonernst.knet.ip.options.Ipv4Option
import com.jasonernst.knet.ip.options.Ipv4Option.Companion.parseOptions
import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.v4.options.Ipv4Option
import com.jasonernst.knet.ip.v4.options.Ipv4Option.Companion.parseOptions
import org.slf4j.LoggerFactory
import java.net.Inet4Address
import java.net.InetAddress
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import org.slf4j.LoggerFactory
Expand Down Expand Up @@ -74,22 +74,64 @@ abstract class Ipv4Option(
}
when (kind) {
Ipv4OptionType.Security.kind -> {
options.add(Ipv4OptionSecurity.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionSecurity.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
Ipv4OptionType.LooseSourceRouting.kind -> {
options.add(Ipv4OptionLooseSourceAndRecordRoute.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionLooseSourceAndRecordRoute.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
Ipv4OptionType.StrictSourceRouting.kind -> {
options.add(Ipv4OptionStrictSourceAndRecordRoute.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionStrictSourceAndRecordRoute.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
Ipv4OptionType.RecordRoute.kind -> {
options.add(Ipv4OptionRecordRoute.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionRecordRoute.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
Ipv4OptionType.StreamId.kind -> {
options.add(Ipv4OptionStreamIdentifier.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionStreamIdentifier.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
Ipv4OptionType.TimeStamp.kind -> {
options.add(Ipv4OptionInternetTimestamp.fromStream(stream, isCopied, optionClass, length))
options.add(
Ipv4OptionInternetTimestamp.fromStream(
stream,
isCopied,
optionClass,
length
)
)
}
else -> {
val data = ByteArray(length.toInt() - 2)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

/**
* The option classes are:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

/**
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

/**
* From RFC 791:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.options.Ipv4OptionLooseSourceAndRecordRoute.Companion.MIN_OPTION_SIZE
import com.jasonernst.knet.ip.v4.options.Ipv4OptionLooseSourceAndRecordRoute.Companion.MIN_OPTION_SIZE
import org.slf4j.LoggerFactory
import java.nio.ByteBuffer
import java.nio.ByteOrder
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

enum class Ipv4OptionSecurityType(
val kind: UShort,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import java.nio.ByteBuffer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

/**
* https://datatracker.ietf.org/doc/html/rfc791 page 15
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import java.nio.ByteBuffer
import java.nio.ByteOrder
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v6

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.IpHeader.Companion.IP6_VERSION
import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.v6.extenions.Ipv6ExtensionHeader
import org.slf4j.LoggerFactory
import java.net.Inet6Address
import java.net.InetAddress
Expand Down Expand Up @@ -72,7 +75,9 @@ data class Ipv6Header(
val destinationBuffer = ByteArray(16)
stream[destinationBuffer]
val destinationAddress = Inet6Address.getByAddress(destinationBuffer) as Inet6Address
val extensionHeaders = Ipv6ExtensionHeader.fromStream(stream, IpType.fromValue(protocol))
val extensionHeaders = Ipv6ExtensionHeader.fromStream(stream,
IpType.fromValue(protocol)
)

return Ipv6Header(
ipVersion,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v6.extenions

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpType
import java.nio.ByteBuffer
import java.nio.ByteOrder

Expand Down Expand Up @@ -37,7 +38,14 @@ open class Ipv6ExtensionHeader(
* Authentication
* Encapsulating Security Payload
*/
val requiredExtensionHeaders = listOf(IpType.HOPOPT, IpType.IPV6_FRAG, IpType.IPV6_OPTS, IpType.IPV6_ROUTE, IpType.AH, IpType.ESP)
val requiredExtensionHeaders = listOf(
IpType.HOPOPT,
IpType.IPV6_FRAG,
IpType.IPV6_OPTS,
IpType.IPV6_ROUTE,
IpType.AH,
IpType.ESP
)

/**
* This will continue to process IPv6 extension headers until the nextheader is not one, ie)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v6.extenions

import com.jasonernst.knet.ip.IpType

data class Ipv6HopByHopOption(
override val nextHeader: UByte = IpType.TCP.value,
Expand Down
4 changes: 2 additions & 2 deletions knet/src/test/kotlin/com/jasonernst/knet/PacketTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.jasonernst.knet

import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.Ipv4Header
import com.jasonernst.knet.ip.Ipv6Header
import com.jasonernst.knet.ip.v4.Ipv4Header
import com.jasonernst.knet.ip.v6.Ipv6Header
import com.jasonernst.knet.transport.tcp.TcpHeader
import com.jasonernst.knet.transport.udp.UdpHeader
import org.junit.jupiter.api.Assertions.assertEquals
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v4

import com.jasonernst.icmp_common.Checksum
import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.IpHeader.Companion.IP4_VERSION
import com.jasonernst.knet.ip.Ipv4Header.Companion.IP4_MIN_FRAGMENT_PAYLOAD
import com.jasonernst.knet.ip.Ipv4Header.Companion.IP4_MIN_HEADER_LENGTH
import com.jasonernst.knet.ip.Ipv4Header.Companion.IP4_WORD_LENGTH
import com.jasonernst.knet.ip.options.Ipv4OptionNoOperation
import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.v4.Ipv4Header.Companion.IP4_MIN_FRAGMENT_PAYLOAD
import com.jasonernst.knet.ip.v4.Ipv4Header.Companion.IP4_MIN_HEADER_LENGTH
import com.jasonernst.knet.ip.v4.Ipv4Header.Companion.IP4_WORD_LENGTH
import com.jasonernst.knet.ip.v4.options.Ipv4OptionNoOperation
import com.jasonernst.knet.transport.tcp.TcpHeader
import com.jasonernst.knet.transport.tcp.options.TcpOptionEndOfOptionList
import com.jasonernst.packetdumper.stringdumper.StringPacketDumper
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
package com.jasonernst.knet.ip.options
package com.jasonernst.knet.ip.v4.options

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.Ipv4Header
import com.jasonernst.knet.ip.v4.Ipv4Header
import com.jasonernst.knet.ip.v4.options.Ipv4Option
import com.jasonernst.knet.ip.v4.options.Ipv4OptionClassType
import com.jasonernst.knet.ip.v4.options.Ipv4OptionEndOfOptionList
import com.jasonernst.knet.ip.v4.options.Ipv4OptionInternetTimestamp
import com.jasonernst.knet.ip.v4.options.Ipv4OptionLooseSourceAndRecordRoute
import com.jasonernst.knet.ip.v4.options.Ipv4OptionNoOperation
import com.jasonernst.knet.ip.v4.options.Ipv4OptionRecordRoute
import com.jasonernst.knet.ip.v4.options.Ipv4OptionSecurity
import com.jasonernst.knet.ip.v4.options.Ipv4OptionSecurityType
import com.jasonernst.knet.ip.v4.options.Ipv4OptionStreamIdentifier
import com.jasonernst.knet.ip.v4.options.Ipv4OptionStrictSourceAndRecordRoute
import com.jasonernst.knet.ip.v4.options.Ipv4OptionType
import com.jasonernst.knet.ip.v4.options.Ipv4OptionUnknown
import com.jasonernst.knet.transport.tcp.options.TcpOptionNoOperation
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNotEquals
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.jasonernst.knet.ip
package com.jasonernst.knet.ip.v6

import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.v6.extenions.Ipv6ExtensionHeader
import com.jasonernst.knet.ip.v6.extenions.Ipv6HopByHopOption
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Assertions.assertTrue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.jasonernst.knet.tcp.options
import com.jasonernst.knet.PacketTooShortException
import com.jasonernst.knet.ip.IpHeader
import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.options.Ipv4OptionNoOperation
import com.jasonernst.knet.ip.v4.options.Ipv4OptionNoOperation
import com.jasonernst.knet.nextheader.NextHeader
import com.jasonernst.knet.transport.tcp.TcpHeader
import com.jasonernst.knet.transport.tcp.options.TcpOption
Expand Down

0 comments on commit b35a75d

Please sign in to comment.