Skip to content

Commit

Permalink
Adapt to new binary-data defaults of the type-function of variably-ty…
Browse files Browse the repository at this point in the history
…ped-fields
  • Loading branch information
hannesm committed Jan 19, 2014
1 parent deea070 commit d546b28
Show file tree
Hide file tree
Showing 9 changed files with 16 additions and 28 deletions.
7 changes: 3 additions & 4 deletions protocols/ethernet.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ define binary-data <ethernet-frame> (<header-frame>)
layering field type-code :: <2byte-big-endian-unsigned-integer>;
variably-typed field payload,
type-function: if (frame.type-code > 1500)
payload-type(frame)
frame.payload-type
else
<llc-frame>
end;
Expand All @@ -82,8 +82,7 @@ end;
define binary-data <snap-frame> (<header-frame>)
field organization-code :: <3byte-big-endian-unsigned-integer> = 0;
layering field type-code :: <2byte-big-endian-unsigned-integer>;
variably-typed field payload,
type-function: lookup-layer(<ethernet-frame>, frame.type-code) | <raw-frame>;
variably-typed field payload;
end;

define binary-data <vlan-tag> (<header-frame>)
Expand All @@ -93,7 +92,7 @@ define binary-data <vlan-tag> (<header-frame>)
field canonical-format-indicator :: <1bit-unsigned-integer> = 0;
field vlan-id :: <12bit-unsigned-integer>;
layering field type-code :: <2byte-big-endian-unsigned-integer>;
variably-typed field payload, type-function: frame.payload-type;
variably-typed field payload;
end;

define method source-address (frame :: <vlan-tag>) => (res :: <mac-address>)
Expand Down
3 changes: 1 addition & 2 deletions protocols/hdlc.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ define binary-data <cisco-hdlc-frame> (<header-frame>)
#x8f <=> #"multicast" };
field control :: <unsigned-byte> = 0;
layering field protocol :: <2byte-big-endian-unsigned-integer> = #x800;
variably-typed field payload,
type-function: payload-type(frame);
variably-typed field payload;
end;

// Serial Line Address Resolution Protocol
Expand Down
19 changes: 6 additions & 13 deletions protocols/ipv4.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ define binary-data <ipv4-frame> (<header-frame>)
reached-end?: instance?(frame, <end-of-option-ip-option>);
variably-typed field payload,
start: frame.header-length * 4 * 8,
end: frame.total-length * 8,
type-function: payload-type(frame);
end: frame.total-length * 8;
end;


Expand All @@ -97,25 +96,19 @@ define binary-data <udp-frame> (<header-frame>)
field checksum :: <2byte-big-endian-unsigned-integer> = 0;
variably-typed field payload,
end: frame.payload-size * 8,
type-function: my-payload-type(frame);
type-function:
lookup-layer(frame.object-class, frame.layer-magic) |
lookup-layer(frame.object-class, frame.source-port) |
<raw-frame>
end;

define function my-payload-type (frame :: <udp-frame>)
let res = payload-type(frame);
if (res == <raw-frame>)
lookup-layer(frame.object-class, frame.source-port) | <raw-frame>;
else
res;
end;
end;

define binary-data <arp-frame> (<container-frame>)
over <ethernet-frame> #x806;
over <link-control> #x806;
field mac-address-type :: <2byte-big-endian-unsigned-integer> = 1;
field protocol-address-type :: <2byte-big-endian-unsigned-integer> = #x800;
field mac-address-size :: <unsigned-byte> = byte-offset(field-size(<mac-address>));
field protocol-address-size :: <unsigned-byte>
field protocol-address-size :: <unsigned-byte>
= byte-offset(field-size(<ipv4-address>));
enum field operation :: <2byte-big-endian-unsigned-integer>,
mappings: { #x1 <=> #"arp-request",
Expand Down
3 changes: 1 addition & 2 deletions protocols/ipv6.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,8 @@ define binary-data <ipv6-frame> (<header-frame>)
field source-address :: <ipv6-address>;
field destination-address :: <ipv6-address>;
variably-typed field payload,
type-function: payload-type(frame),
length: frame.payload-length * 8;
end;
end;

define binary-data <ipv6-extension-header> (<container-frame>)
field option-type :: <unsigned-byte>;
Expand Down
3 changes: 1 addition & 2 deletions protocols/logical-link.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ define binary-data <link-control> (<header-frame>)
field control :: <unsigned-byte>;
field organisation-code :: <3byte-big-endian-unsigned-integer>;
layering field type-code :: <2byte-big-endian-unsigned-integer>;
variably-typed field payload,
type-function: payload-type(frame);
variably-typed field payload;
end;

2 changes: 1 addition & 1 deletion protocols/openpgp.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ define binary-data <multi-precision-integer> (<container-frame>)
field mpi-length :: <2byte-big-endian-unsigned-integer>;
field real-mpi :: <raw-frame>, length: byte-offset(frame.mpi-length + 7);
end;

define binary-data <string-to-key> (<variably-typed-container-frame>)
layering field type :: <unsigned-byte>;
field hash-algorithm :: <hash-algorithm>;
Expand Down
2 changes: 1 addition & 1 deletion protocols/pcap.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ define binary-data <pcap-packet> (<header-frame>)
$DLT-EN10MB => <ethernet-frame>;
$DLT-C-HDLC => <cisco-hdlc-frame>;
$DLT-PRISM-HEADER => <prism2-frame>;
$DLT-80211-BSD-RADIO => <bsd-80211-radio-frame>;
$DLT-80211-BSD-RADIO => <bsd-80211-radio-frame>;
otherwise => <raw-frame>;
end,
length: frame.capture-length * 8;
Expand Down
3 changes: 1 addition & 2 deletions protocols/ppp.dylan
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ license: see license.txt in this distribution
define binary-data <ppp> (<header-frame>)
layering field protocol :: <2byte-big-endian-unsigned-integer>;
variably-typed field payload,
type-function: payload-type(frame);
variably-typed field payload;
end;

define abstract binary-data <link-control-protocol> (<variably-typed-container-frame>)
Expand Down

0 comments on commit d546b28

Please sign in to comment.