dataModule
Direct memory access and manipulation.
Class data
| data:__len () | |
| data:__tostring () | |
| data:checksum ([offset=0[, length]]) | Returns the Internet checksum of the length bytes at offset. |
| data:getbyte (offset) | Reads an unsigned 8-bit integer at offset; an alias of getuint8. |
| data:getint16 (offset) | Reads a signed 16-bit integer at offset. |
| data:getint32 (offset) | Reads a signed 32-bit integer at offset. |
| data:getint64 (offset) | Reads a signed 64-bit integer at offset. |
| data:getint8 (offset) | Reads a signed 8-bit integer at offset. |
| data:getstring (offset[, length]) | Reads length bytes at offset as a string. |
| data:getuint16 (offset) | Reads an unsigned 16-bit integer at offset. |
| data:getuint32 (offset) | Reads an unsigned 32-bit integer at offset. |
| data:getuint8 (offset) | Reads an unsigned 8-bit integer at offset. |
| data:resize (new_size) | Resizes the buffer; the bytes it keeps survive and the bytes a growth adds read as zeros. |
| data:setbyte (offset, value) | Writes an 8-bit integer at offset; an alias of setuint8. |
| data:setint16 (offset, value) | Writes a signed 16-bit integer at offset. |
| data:setint32 (offset, value) | Writes a signed 32-bit integer at offset. |
| data:setint64 (offset, value) | Writes a signed 64-bit integer at offset. |
| data:setint8 (offset, value) | Writes a signed 8-bit integer at offset. |
| data:setstring (offset, s) | Writes the bytes of s at offset. |
| data:setuint16 (offset, value) | Writes an unsigned 16-bit integer at offset. |
| data:setuint32 (offset, value) | Writes an unsigned 32-bit integer at offset. |
| data:setuint8 (offset, value) | Writes an unsigned 8-bit integer at offset. |
data
| new (size[, mode]) | Allocates a buffer of size bytes, zeroed. |
Class data in detail
data.new() and by the modules that
expose kernel memory (as skb:data()), read and written through the
getuint/setuint accessors below.
Offsets start at 0, and the integer accessors use host byte order: convert a
network field with byteorder, as byteorder.ntoh16(d:getuint16(12)). A data
object a binding hands to a callback, or skb:data() returns for that
callback’s skb, views kernel memory only while that callback runs: afterwards
its length is 0 and every access raises “out of bounds”, so copy what you keep
with getstring. skb:copy():data() views the copy’s own buffer until the copy
is collected, and is then cleared the same way. A write to a view a binding marks
read only raises “read only”.
An integer setter takes a value of its width read either signed or unsigned, so setint8 and setuint8 both store -1 and 255 as the same byte, and raises “out of bounds” for a value past it.
- data:__len ()
-
Returns
-
integer
data size in bytes
- data:__tostring ()
-
Returns
- data:checksum ([offset=0[, length]])
-
Returns the Internet checksum of the
lengthbytes atoffset. It is their 16-bit ones'-complement sum, folded and complemented ascsum_folddoes, so a region that holds its correct checksum gives 0.Parameters
- offset integer (default 0)
- length integer number of bytes; default: from offset to end (optional)
Returns
-
integer
Raises
if out of bounds - data:getbyte (offset)
-
Reads an unsigned 8-bit integer at
offset; an alias of getuint8.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getint16 (offset)
-
Reads a signed 16-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getint32 (offset)
-
Reads a signed 32-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getint64 (offset)
-
Reads a signed 64-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getint8 (offset)
-
Reads a signed 8-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getstring (offset[, length])
-
Reads
lengthbytes atoffsetas a string.Parameters
- offset integer
- length integer number of bytes; default: from offset to end (optional)
Returns
-
string
the bytes, empty for a zero length at any offset up to the size, the end included
Raises
“out of bounds” for an offset or a length that reaches past the size, or a negative one - data:getuint16 (offset)
-
Reads an unsigned 16-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getuint32 (offset)
-
Reads an unsigned 32-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:getuint8 (offset)
-
Reads an unsigned 8-bit integer at
offset.Parameters
- offset integer
Returns
-
integer
Raises
if out of bounds - data:resize (new_size)
-
Resizes the buffer; the bytes it keeps survive and the bytes a growth adds read as zeros.
Parameters
- new_size
integer
number of bytes, from 1 up to
INT_MAX.
Raises
if out of bounds, read-only, not owned, or the allocation fails - new_size
integer
number of bytes, from 1 up to
- data:setbyte (offset, value)
-
Writes an 8-bit integer at
offset; an alias of setuint8.Parameters
- offset integer
- value integer from -128 to 255
Raises
if out of bounds or read-only - data:setint16 (offset, value)
-
Writes a signed 16-bit integer at
offset.Parameters
- offset integer
- value integer from -32768 to 65535
Raises
if out of bounds or read-only - data:setint32 (offset, value)
-
Writes a signed 32-bit integer at
offset.Parameters
- offset integer
- value integer from -231 to 232 - 1
Raises
if out of bounds or read-only - data:setint64 (offset, value)
-
Writes a signed 64-bit integer at
offset.Parameters
- offset integer
- value integer
Raises
if out of bounds or read-only - data:setint8 (offset, value)
-
Writes a signed 8-bit integer at
offset.Parameters
- offset integer
- value integer from -128 to 255
Raises
if out of bounds or read-only - data:setstring (offset, s)
-
Writes the bytes of
satoffset.Parameters
- offset integer
- s string
Raises
“out of bounds” for bytes past the size or a negative offset, or “read only”; an emptyswrites nothing at any offset up to the size - data:setuint16 (offset, value)
-
Writes an unsigned 16-bit integer at
offset.Parameters
- offset integer
- value integer from -32768 to 65535
Raises
if out of bounds or read-only - data:setuint32 (offset, value)
-
Writes an unsigned 32-bit integer at
offset.Parameters
- offset integer
- value integer from -231 to 232 - 1
Raises
if out of bounds or read-only - data:setuint8 (offset, value)
-
Writes an unsigned 8-bit integer at
offset.Parameters
- offset integer
- value integer from -128 to 255
Raises
if out of bounds or read-only
data in detail
- new (size[, mode])
-
Allocates a buffer of
sizebytes, zeroed.Parameters
- size
integer
number of bytes, from 1 up to
INT_MAX. - mode
string
"shared"(default) or"single"; a"single"buffer cannot be passed to another runtime. (optional)
Returns
Raises
if out of bounds, the mode is invalid, or allocation fails - size
integer
number of bytes, from 1 up to