diff --git a/build-with-docker.sh b/build-with-docker.sh index 5b1bc30..e8e46cd 100755 --- a/build-with-docker.sh +++ b/build-with-docker.sh @@ -5,5 +5,5 @@ docker build -t qubes-mirage-firewall . echo Building 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 last known: 6f8f0f19ba62bf5312039f2904ea8696584f8ff49443dec098facf261449ebf2" +echo "SHA2 last known: 91c5bf44a85339aaf14e4763a29c2b64537f5bc41cd7dc2571af954ec9dd3cad" echo "(hashes should match for released versions)" diff --git a/firewall.ml b/firewall.ml index e80d7a3..96ea516 100644 --- a/firewall.ml +++ b/firewall.ml @@ -12,33 +12,23 @@ module Log = (val Logs.src_log src : Logs.LOG) let transmit_ipv4 packet iface = Lwt.catch (fun () -> - Lwt.catch - (fun () -> - let fragments = ref [] in - iface#writev `IPv4 (fun b -> - match Nat_packet.into_cstruct packet b with - | Error e -> - Log.warn (fun f -> f "Failed to write packet to %a: %a" - Ipaddr.V4.pp iface#other_ip - Nat_packet.pp_error e); - 0 - | Ok (n, frags) -> fragments := frags ; n) >>= fun () -> - Lwt_list.iter_s (fun f -> - let size = Cstruct.len f in - iface#writev `IPv4 (fun b -> Cstruct.blit f 0 b 0 size ; size)) - !fragments) - (fun ex -> - Log.warn (fun f -> f "Failed to write packet to %a: %s" - Ipaddr.V4.pp iface#other_ip - (Printexc.to_string ex)); - Lwt.return_unit - ) - ) + let fragments = ref [] in + iface#writev `IPv4 (fun b -> + match Nat_packet.into_cstruct packet b with + | Error e -> + Log.warn (fun f -> f "Failed to NAT packet to %a: %a" + Ipaddr.V4.pp iface#other_ip + Nat_packet.pp_error e); + 0 + | Ok (n, frags) -> fragments := frags ; n) >>= fun () -> + Lwt_list.iter_s (fun f -> + let size = Cstruct.len f in + iface#writev `IPv4 (fun b -> Cstruct.blit f 0 b 0 size ; size)) + !fragments) (fun ex -> - Log.err (fun f -> f "Exception in transmit_ipv4: %s for:@.%a" - (Printexc.to_string ex) - Nat_packet.pp packet - ); + Log.warn (fun f -> f "Failed to write packet to %a: %s" + Ipaddr.V4.pp iface#other_ip + (Printexc.to_string ex)); Lwt.return_unit )