mirror of
https://github.com/mirage/qubes-mirage-firewall.git
synced 2024-10-01 01:05:39 -04:00
update to ethernet 3.0 API
This commit is contained in:
parent
1d0aaf2666
commit
ed0f7667e4
@ -7,7 +7,7 @@ FROM ocurrent/opam@sha256:fce44a073ff874166b51c33a4e37782286d48dbba1b5aa43563a0d
|
|||||||
# Pin last known-good version for reproducible builds.
|
# Pin last known-good version for reproducible builds.
|
||||||
# Remove this line (and the base image pin above) if you want to test with the
|
# Remove this line (and the base image pin above) if you want to test with the
|
||||||
# latest versions.
|
# latest versions.
|
||||||
RUN cd ~/opam-repository && git fetch origin master && git reset --hard 295910defa4dedc27af45ca64d63e8927f8261ff && opam update
|
RUN cd ~/opam-repository && git fetch origin master && git reset --hard 479a47921a489d11833e03cf949bfb612bd65e41 && opam update
|
||||||
|
|
||||||
RUN opam depext -i -y mirage
|
RUN opam depext -i -y mirage
|
||||||
RUN mkdir /home/opam/qubes-mirage-firewall
|
RUN mkdir /home/opam/qubes-mirage-firewall
|
||||||
|
@ -5,5 +5,5 @@ docker build -t qubes-mirage-firewall .
|
|||||||
echo Building Firewall...
|
echo Building Firewall...
|
||||||
docker run --rm -i -v `pwd`:/home/opam/qubes-mirage-firewall qubes-mirage-firewall
|
docker run --rm -i -v `pwd`:/home/opam/qubes-mirage-firewall qubes-mirage-firewall
|
||||||
echo "SHA2 of build: $(sha256sum qubes_firewall.xen)"
|
echo "SHA2 of build: $(sha256sum qubes_firewall.xen)"
|
||||||
echo "SHA2 last known: 4f4b21a8f9d131486700f8be9bd15067878907313b2ebc7a048c27af8a918e1e"
|
echo "SHA2 last known: e2af3718b7f40ba533f378d1402a41008c3520fe84d991ab58d3230772cc824c"
|
||||||
echo "(hashes should match for released versions)"
|
echo "(hashes should match for released versions)"
|
||||||
|
@ -116,11 +116,11 @@ let add_vif get_ts { Dao.ClientVif.domid; device_id } dns_client ~client_ip ~rou
|
|||||||
let listener =
|
let listener =
|
||||||
Lwt.catch
|
Lwt.catch
|
||||||
(fun () ->
|
(fun () ->
|
||||||
Netback.listen backend ~header_size:Ethernet_wire.sizeof_ethernet (fun frame ->
|
Netback.listen backend ~header_size:Ethernet.Packet.sizeof_ethernet (fun frame ->
|
||||||
match Ethernet_packet.Unmarshal.of_cstruct frame with
|
match Ethernet.Packet.of_cstruct frame with
|
||||||
| Error err -> Log.warn (fun f -> f "Invalid Ethernet frame: %s" err); Lwt.return_unit
|
| Error err -> Log.warn (fun f -> f "Invalid Ethernet frame: %s" err); Lwt.return_unit
|
||||||
| Ok (eth, payload) ->
|
| Ok (eth, payload) ->
|
||||||
match eth.Ethernet_packet.ethertype with
|
match eth.Ethernet.Packet.ethertype with
|
||||||
| `ARP -> input_arp ~fixed_arp ~iface payload
|
| `ARP -> input_arp ~fixed_arp ~iface payload
|
||||||
| `IPv4 -> input_ipv4 get_ts fragment_cache ~iface ~router dns_client payload
|
| `IPv4 -> input_ipv4 get_ts fragment_cache ~iface ~router dns_client payload
|
||||||
| `IPv6 -> Lwt.return_unit (* TODO: oh no! *)
|
| `IPv6 -> Lwt.return_unit (* TODO: oh no! *)
|
||||||
|
@ -23,8 +23,7 @@ let main =
|
|||||||
package "astring";
|
package "astring";
|
||||||
package "tcpip" ~min:"3.7.0";
|
package "tcpip" ~min:"3.7.0";
|
||||||
package ~min:"2.3.0" ~sublibs:["mirage"] "arp";
|
package ~min:"2.3.0" ~sublibs:["mirage"] "arp";
|
||||||
package "ethernet";
|
package ~min:"3.0.0" "ethernet";
|
||||||
package "mirage-protocols";
|
|
||||||
package "shared-memory-ring" ~min:"3.0.0";
|
package "shared-memory-ring" ~min:"3.0.0";
|
||||||
package "netchannel" ~min:"1.11.0";
|
package "netchannel" ~min:"1.11.0";
|
||||||
package "mirage-net-xen";
|
package "mirage-net-xen";
|
||||||
|
@ -21,7 +21,7 @@ module IntMap = Map.Make(Int)
|
|||||||
(** An Ethernet interface. *)
|
(** An Ethernet interface. *)
|
||||||
class type interface = object
|
class type interface = object
|
||||||
method my_mac : Macaddr.t
|
method my_mac : Macaddr.t
|
||||||
method writev : Mirage_protocols.Ethernet.proto -> (Cstruct.t -> int) -> unit Lwt.t
|
method writev : Ethernet.Packet.proto -> (Cstruct.t -> int) -> unit Lwt.t
|
||||||
method my_ip : Ipaddr.V4.t
|
method my_ip : Ipaddr.V4.t
|
||||||
method other_ip : Ipaddr.V4.t
|
method other_ip : Ipaddr.V4.t
|
||||||
end
|
end
|
||||||
@ -37,7 +37,7 @@ end
|
|||||||
|
|
||||||
(** An Ethernet header from [src]'s MAC address to [dst]'s with an IPv4 payload. *)
|
(** An Ethernet header from [src]'s MAC address to [dst]'s with an IPv4 payload. *)
|
||||||
let eth_header ethertype ~src ~dst =
|
let eth_header ethertype ~src ~dst =
|
||||||
Ethernet_packet.Marshal.make_cstruct { Ethernet_packet.source = src; destination = dst; ethertype }
|
Ethernet.Packet.make_cstruct { Ethernet.Packet.source = src; destination = dst; ethertype }
|
||||||
|
|
||||||
let error fmt =
|
let error fmt =
|
||||||
let err s = Failure s in
|
let err s = Failure s in
|
||||||
|
@ -53,7 +53,7 @@ end
|
|||||||
| _ ->
|
| _ ->
|
||||||
Firewall.ipv4_from_netvm router (`IPv4 (ip_header, ip_packet))
|
Firewall.ipv4_from_netvm router (`IPv4 (ip_header, ip_packet))
|
||||||
in
|
in
|
||||||
Netif.listen t.net ~header_size:Ethernet_wire.sizeof_ethernet (fun frame ->
|
Netif.listen t.net ~header_size:Ethernet.Packet.sizeof_ethernet (fun frame ->
|
||||||
(* Handle one Ethernet frame from NetVM *)
|
(* Handle one Ethernet frame from NetVM *)
|
||||||
Eth.input t.eth
|
Eth.input t.eth
|
||||||
~arpv4:(Arp.input t.arp)
|
~arpv4:(Arp.input t.arp)
|
||||||
|
Loading…
Reference in New Issue
Block a user