Build:
  1. 0
2026-03-25 13:14.49: New job: test caper.0.9 with ocaml-compiler.5.4.0, using opam dev
                              from https://github.com/ocaml/opam-repository.git#refs/pull/29582/head (fa5fb3a6a806e832e4c7791145889a6bbe8b64ef)
                              on debian-13-ocaml-5.4/amd64

To reproduce locally:

cd $(mktemp -d)
git clone --recursive "https://github.com/ocaml/opam-repository.git" && cd "opam-repository" && git fetch origin "refs/pull/29582/head" && git reset --hard fa5fb3a6
git fetch origin master
git merge --no-edit 2f93e9d4614d6376ed929fc2cee7c59cb9d5833b
cat > ../Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
USER 1000:1000
WORKDIR /home/opam
RUN sudo ln -f /usr/bin/opam-dev /usr/bin/opam
RUN opam init --reinit -ni
RUN opam option solver=builtin-0install && opam config report
ENV OPAMDOWNLOADJOBS="1"
ENV OPAMERRLOGLEN="0"
ENV OPAMPRECISETRACKING="1"
ENV CI="true"
ENV OPAM_REPO_CI="true"
RUN rm -rf opam-repository/
COPY --chown=1000:1000 . opam-repository/
RUN opam repository set-url --strict default opam-repository/
RUN opam update --depexts || true
RUN opam pin add -k version -yn ocaml-compiler.5.4.0 5.4.0
RUN opam reinstall --update-invariant ocaml-compiler.5.4.0; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'ocaml-compiler.5.4.0' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
RUN opam reinstall caper.0.9; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'caper.0.9' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1
RUN (opam reinstall --with-test caper.0.9) || true
RUN opam reinstall --with-test --verbose caper.0.9; \
    res=$?; \
    test "$res" != 31 && exit "$res"; \
    export OPAMCLI=2.0; \
    build_dir=$(opam var prefix)/.opam-switch/build; \
    failed=$(ls "$build_dir"); \
    partial_fails=""; \
    for pkg in $failed; do \
    if opam show -f x-ci-accept-failures: "$pkg" | grep -qF "\"debian-13\""; then \
    echo "A package failed and has been disabled for CI using the 'x-ci-accept-failures' field."; \
    fi; \
    test "$pkg" != 'caper.0.9' && partial_fails="$partial_fails $pkg"; \
    done; \
    test "${partial_fails}" != "" && echo "opam-repo-ci detected dependencies failing: ${partial_fails}"; \
    exit 1

END-OF-DOCKERFILE
docker build -f ../Dockerfile .

2026-03-25 13:14.49: Using cache hint "ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6-ocaml-compiler.5.4.0-caper.0.9-fa5fb3a6a806e832e4c7791145889a6bbe8b64ef"
2026-03-25 13:14.49: Using OBuilder spec:
((from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
 (user (uid 1000) (gid 1000))
 (workdir /home/opam)
 (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
 (run (network host)
      (shell "opam init --reinit --config .opamrc-sandbox -ni"))
 (run (shell "opam option solver=builtin-0install && opam config report"))
 (env OPAMDOWNLOADJOBS 1)
 (env OPAMERRLOGLEN 0)
 (env OPAMPRECISETRACKING 1)
 (env CI true)
 (env OPAM_REPO_CI true)
 (run (shell "rm -rf opam-repository/"))
 (copy (src .) (dst opam-repository/))
 (run (shell "opam repository set-url --strict default opam-repository/"))
 (run (network host)
      (shell "opam update --depexts || true"))
 (run (shell "opam pin add -k version -yn ocaml-compiler.5.4.0 5.4.0"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall --update-invariant ocaml-compiler.5.4.0;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'ocaml-compiler.5.4.0' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
      (network host)
      (shell  "opam reinstall caper.0.9;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'caper.0.9' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
 (run (network host)
      (shell "(opam reinstall --with-test caper.0.9) || true"))
 (run (shell  "opam reinstall --with-test --verbose caper.0.9;\
             \n        res=$?;\
             \n        test \"$res\" != 31 && exit \"$res\";\
             \n        export OPAMCLI=2.0;\
             \n        build_dir=$(opam var prefix)/.opam-switch/build;\
             \n        failed=$(ls \"$build_dir\");\
             \n        partial_fails=\"\";\
             \n        for pkg in $failed; do\
             \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
             \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
             \n          fi;\
             \n          test \"$pkg\" != 'caper.0.9' && partial_fails=\"$partial_fails $pkg\";\
             \n        done;\
             \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
             \n        exit 1"))
)

2026-03-25 13:14.49: Waiting for resource in pool OCluster
2026-03-25 19:44.48: Waiting for worker…
2026-03-25 19:47.32: Got resource from pool OCluster
Building on laodoke.caelum.ci.dev
All commits already cached
Updating files:  69% (12896/18520)
Updating files:  70% (12964/18520)
Updating files:  71% (13150/18520)
Updating files:  72% (13335/18520)
Updating files:  73% (13520/18520)
Updating files:  74% (13705/18520)
Updating files:  75% (13890/18520)
Updating files:  76% (14076/18520)
Updating files:  77% (14261/18520)
Updating files:  78% (14446/18520)
Updating files:  79% (14631/18520)
Updating files:  80% (14816/18520)
Updating files:  81% (15002/18520)
Updating files:  82% (15187/18520)
Updating files:  83% (15372/18520)
Updating files:  84% (15557/18520)
Updating files:  85% (15742/18520)
Updating files:  86% (15928/18520)
Updating files:  87% (16113/18520)
Updating files:  88% (16298/18520)
Updating files:  89% (16483/18520)
Updating files:  90% (16668/18520)
Updating files:  91% (16854/18520)
Updating files:  92% (17039/18520)
Updating files:  93% (17224/18520)
Updating files:  94% (17409/18520)
Updating files:  95% (17594/18520)
Updating files:  96% (17780/18520)
Updating files:  97% (17965/18520)
Updating files:  98% (18150/18520)
Updating files:  99% (18335/18520)
Updating files: 100% (18520/18520)
Updating files: 100% (18520/18520), done.
HEAD is now at 2f93e9d461 Merge pull request #29592 from dinosaure/release-miou-v0.5.5
Merge made by the 'ort' strategy.
 packages/ocaml-compiler/ocaml-compiler.5.3.0/opam      |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.3/opam        |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.0/opam      |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~alpha1/opam    |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~beta1/opam     |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.4.0~beta2/opam     |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.0~rc1/opam  |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4.1/opam      |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.4/opam        |  5 ++++-
 .../ocaml-compiler/ocaml-compiler.5.5.0~alpha1/opam    |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.5/opam        |  5 ++++-
 packages/ocaml-compiler/ocaml-compiler.5.6/opam        |  5 ++++-
 packages/ocaml-option-llvm/ocaml-option-llvm.1/opam    | 18 ++++++++++++++++++
 .../ocaml-options-vanilla/ocaml-options-vanilla.1/opam |  1 +
 packages/ocaml-variants/ocaml-variants.5.2.0+msvc/opam |  2 ++
 15 files changed, 69 insertions(+), 12 deletions(-)
 create mode 100644 packages/ocaml-option-llvm/ocaml-option-llvm.1/opam

(from ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6)
Unable to find image 'ocaml/opam:debian-13-ocaml-5.4@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6' locally
docker.io/ocaml/opam@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6: Pulling from ocaml/opam
866771c43bf5: Already exists
1e49bea09367: Already exists
e793768537e6: Already exists
ed323d3d481a: Already exists
7df34a5cd5f1: Already exists
fd712d3eb935: Already exists
4b9fb8c99118: Already exists
9d9a01948b94: Already exists
0f1514f90b32: Already exists
e1ec5a753447: Already exists
03cc323e2f71: Already exists
c09c08ea9749: Already exists
b36b619f8e6b: Already exists
195344ca5274: Already exists
228ee78582a6: Already exists
504bde1c25b3: Already exists
9d8b1356c89f: Already exists
9d8b1356c89f: Already exists
568fb6dda155: Already exists
c499c9198aea: Already exists
048e5e358118: Already exists
871ca48eb45d: Already exists
4f4fb700ef54: Already exists
a5a2568b9df9: Already exists
068cf3106ac8: Already exists
559f54ec9b29: Already exists
798ffd96fde5: Already exists
e9a891bf80d7: Already exists
d720cfe12674: Already exists
c81c932f4a91: Already exists
79f24fa3bb11: Already exists
8c1debcd8c20: Already exists
1bb2cfea7250: Already exists
2b3d3ca75e4c: Already exists
557cacaf263c: Already exists
d10483022eef: Already exists
7b62a90d8223: Already exists
28ce8ea66e72: Already exists
d975909ea717: Already exists
5c215c69c247: Already exists
e7c082452a54: Already exists
f6cbd774d654: Pulling fs layer
b40777a84cca: Pulling fs layer
7bb5edb9c889: Pulling fs layer
020670bcefab: Pulling fs layer
46df05d0db83: Pulling fs layer
45bde7b38933: Pulling fs layer
b4d63fa01ada: Pulling fs layer
020670bcefab: Waiting
46df05d0db83: Waiting
45bde7b38933: Waiting
b4d63fa01ada: Waiting
f6cbd774d654: Download complete
b40777a84cca: Verifying Checksum
b40777a84cca: Download complete
f6cbd774d654: Pull complete
7bb5edb9c889: Download complete
b40777a84cca: Pull complete
7bb5edb9c889: Pull complete
46df05d0db83: Verifying Checksum
46df05d0db83: Download complete
45bde7b38933: Verifying Checksum
45bde7b38933: Download complete
b4d63fa01ada: Verifying Checksum
b4d63fa01ada: Download complete
020670bcefab: Verifying Checksum
020670bcefab: Download complete
020670bcefab: Pull complete
46df05d0db83: Pull complete
45bde7b38933: Pull complete
b4d63fa01ada: Pull complete
Digest: sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
Status: Downloaded newer image for ocaml/opam@sha256:bd342cbd7766c453282fdafbc2e565ae3361320ec344722cf4372b782e4a97f6
2026-03-25 19:47.40 ---> using "41eea30e3f639c18d8cf57c309ec76919ec7b2398036f7e41744cbce59a133d3" from cache

/: (user (uid 1000) (gid 1000))

/: (workdir /home/opam)

/home/opam: (run (shell "sudo ln -f /usr/bin/opam-dev /usr/bin/opam"))
2026-03-25 19:47.40 ---> using "4ad7f430d684c40cedc651267e0edf890c044fe4e624255de377c471b4526bac" from cache

/home/opam: (run (network host)
                 (shell "opam init --reinit --config .opamrc-sandbox -ni"))
Configuring from /home/opam/.opamrc-sandbox, then /home/opam/.opamrc, and finally from built-in defaults.
Checking for available remotes: rsync and local, git.
  - you won't be able to use mercurial repositories unless you install the hg command on your system.
  - you won't be able to use darcs repositories unless you install the darcs command on your system.

This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.2, which can't be reverted.
You may want to back it up before going further.

Continue? [Y/n] y
Format upgrade done.

<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] Initialised
2026-03-25 19:47.40 ---> using "71fa58e52457bf6a7eac317c6a6ef1e2bdf53e533a1e4fd04b90c9349347e038" from cache

/home/opam: (run (shell "opam option solver=builtin-0install && opam config report"))
Set to 'builtin-0install' the field solver in global configuration
# opam config report
# opam-version         2.5.0
# self-upgrade         no
# system               arch=x86_64 os=linux os-distribution=debian os-version=13
# solver               builtin-0install
# install-criteria     -changed,-count[avoid-version,solution]
# upgrade-criteria     -count[avoid-version,solution]
# jobs                 71
# repositories         1 (version-controlled)
# pinned               1 (version)
# current-switch       5.4
# invariant            ["ocaml-base-compiler" {= "5.4.0"}]
# compiler-packages    ocaml-base-compiler.5.4.0, ocaml-compiler.5.4.0, ocaml-options-vanilla.1
# ocaml:native         true
# ocaml:native-tools   true
# ocaml:native-dynlink true
# ocaml:stubsdir       /home/opam/.opam/5.4/lib/ocaml/stublibs:/home/opam/.opam/5.4/lib/ocaml
# ocaml:preinstalled   false
# ocaml:compiler       5.4.0
2026-03-25 19:47.40 ---> using "ed86081cb38ca125a920162bfe6a4bb7b1c27c6973c917551687c83cf44dbfdf" from cache

/home/opam: (env OPAMDOWNLOADJOBS 1)

/home/opam: (env OPAMERRLOGLEN 0)

/home/opam: (env OPAMPRECISETRACKING 1)

/home/opam: (env CI true)

/home/opam: (env OPAM_REPO_CI true)

/home/opam: (run (shell "rm -rf opam-repository/"))
2026-03-25 19:47.40 ---> using "04a48515eea40c32b96da0c71328b4bba0edb66eed83d4f78554b39097cf1f25" from cache

/home/opam: (copy (src .) (dst opam-repository/))
2026-03-25 19:47.41 ---> using "034191995d824300f355cbba1072d6e5fe6d815701f24eb84d82c75009d73829" from cache

/home/opam: (run (shell "opam repository set-url --strict default opam-repository/"))
[default] Initialised
2026-03-25 19:47.41 ---> using "8232259ea36ea8848dc29ae49703acf145fd27b40f3ebd8fb785db7f8da1b9d4" from cache

/home/opam: (run (network host)
                 (shell "opam update --depexts || true"))
+ /usr/bin/sudo "apt-get" "update"
- Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]
- Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
- Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
- Get:4 http://deb.debian.org/debian trixie/main amd64 Packages [9671 kB]
- Get:5 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [114 kB]
- Fetched 10.0 MB in 2s (6318 kB/s)
- Reading package lists...
- 
2026-03-25 19:47.41 ---> using "a75782a571df4fc8f8933e94c681af881015ee87cdd4c652f8ae9af1d8cfad37" from cache

/home/opam: (run (shell "opam pin add -k version -yn ocaml-compiler.5.4.0 5.4.0"))
ocaml-compiler is now pinned to version 5.4.0
2026-03-25 19:47.41 ---> using "60e129f7398974b5fa5afc8f56ec09bd24a9182f5e9834464bfc959db1aa6b14" from cache

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall --update-invariant ocaml-compiler.5.4.0;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'ocaml-compiler.5.4.0' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
The following actions will be performed:
=== recompile 8 packages
  - recompile base-domains        base           [uses ocaml]
  - recompile base-effects        base           [uses ocaml]
  - recompile base-nnp            base           [uses base-domains]
  - recompile ocaml               5.4.0          [uses ocaml-base-compiler]
  - recompile ocaml-base-compiler 5.4.0 (pinned) [uses ocaml-compiler]
  - recompile ocaml-compiler      5.4.0 (pinned)
  - recompile ocaml-config        3              [uses ocaml-base-compiler]
  - recompile opam-depext         1.2.3          [uses ocaml]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved ocaml-compiler.5.4.0  (cached)
-> retrieved ocaml-config.3  (cached)
-> retrieved opam-depext.1.2.3  (cached)
-> removed   base-effects.base
-> removed   base-nnp.base
-> removed   base-domains.base
-> removed   opam-depext.1.2.3
-> removed   ocaml.5.4.0
-> removed   ocaml-config.3
-> removed   ocaml-base-compiler.5.4.0
-> removed   ocaml-compiler.5.4.0
-> installed ocaml-compiler.5.4.0
-> installed ocaml-base-compiler.5.4.0
-> installed ocaml-config.3
-> installed ocaml.5.4.0
-> installed base-domains.base
-> installed base-effects.base
-> installed base-nnp.base
-> installed opam-depext.1.2.3
Done.

<><> opam-depext.1.2.3 installed successfully <><><><><><><><><><><><><><><><><>
=> opam-depext is unnecessary when used with opam >= 2.1. Please use opam install directly instead
# To update the current shell environment, run: eval $(opam env)
2026-03-25 19:47.41 ---> using "efbc92fc0c607605c8bb33f9e4c8fe340a48c67e14d2f61592db8a4edc5c0b15" from cache

/home/opam: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
                 (network host)
                 (shell  "opam reinstall caper.0.9;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'caper.0.9' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
caper.0.9 is not installed. Install it? [Y/n] y
The following actions will be performed:
=== install 15 packages
  - install angstrom           0.16.1   [required by caper]
  - install bigstringaf        0.10.0   [required by angstrom]
  - install caper              0.9
  - install conf-m4            1        [required by caper]
  - install csexp              1.5.2    [required by dune-configurator]
  - install dune               3.22.0   [required by angstrom, menhir]
  - install dune-configurator  3.22.0   [required by bigstringaf]
  - install menhir             20260209 [required by caper]
  - install menhirCST          20260209 [required by menhir]
  - install menhirGLR          20260209 [required by menhir]
  - install menhirLib          20260209 [required by menhir]
  - install menhirSdk          20260209 [required by menhir]
  - install ocaml-syntax-shims 1.0.0    [required by angstrom]
  - install ocamlbuild         0.16.1   [required by caper]
  - install ocamlfind          1.9.8    [required by caper]

The following system packages will first need to be installed:
    m4

<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>

opam believes some required external dependencies are missing. opam can:
> 1. Run apt-get to install them (may need root/sudo access)
  2. Display the recommended apt-get command and wait while you run it manually (e.g. in another terminal)
  3. Continue anyway, and, upon success, permanently register that this external dependency is present, but not detectable
  4. Abort the installation

[1/2/3/4] 1

+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "m4"
- Selecting previously unselected package m4.
- (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 20654 files and directories currently installed.)
- Preparing to unpack .../archives/m4_1.4.19-8_amd64.deb ...
- Unpacking m4 (1.4.19-8) ...
- Setting up m4 (1.4.19-8) ...

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved angstrom.0.16.1  (cached)
-> retrieved bigstringaf.0.10.0  (cached)
-> retrieved caper.0.9  (cached)
-> retrieved csexp.1.5.2  (cached)
-> installed conf-m4.1
-> retrieved dune.3.22.0, dune-configurator.3.22.0  (cached)
-> retrieved menhir.20260209, menhirCST.20260209, menhirGLR.20260209, menhirLib.20260209, menhirSdk.20260209  (cached)
-> retrieved ocaml-syntax-shims.1.0.0  (cached)
-> retrieved ocamlbuild.0.16.1  (cached)
-> retrieved ocamlfind.1.9.8  (cached)
-> installed ocamlfind.1.9.8
-> installed ocamlbuild.0.16.1
-> installed dune.3.22.0
-> installed csexp.1.5.2
-> installed menhirCST.20260209
-> installed menhirGLR.20260209
-> installed menhirLib.20260209
-> installed menhirSdk.20260209
-> installed ocaml-syntax-shims.1.0.0
-> installed dune-configurator.3.22.0
-> installed bigstringaf.0.10.0
-> installed angstrom.0.16.1
-> installed menhir.20260209
-> installed caper.0.9
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 19:50.29 ---> saved as "e9e9a25fbc63da12b6f93e2c32c04a25e91ad56a4b8ee33da081106e4dae1041"

/home/opam: (run (network host)
                 (shell "(opam reinstall --with-test caper.0.9) || true"))
The following actions will be performed:
=== recompile 1 package
  - recompile caper 0.9

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved caper.0.9  (https://opam.ocaml.org/cache)
-> removed   caper.0.9
-> installed caper.0.9
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 19:50.56 ---> saved as "e8f69eb64d955d1b39deee236103690bca89963d57f42b59201170856971e4e0"

/home/opam: (run (shell  "opam reinstall --with-test --verbose caper.0.9;\
                        \n        res=$?;\
                        \n        test \"$res\" != 31 && exit \"$res\";\
                        \n        export OPAMCLI=2.0;\
                        \n        build_dir=$(opam var prefix)/.opam-switch/build;\
                        \n        failed=$(ls \"$build_dir\");\
                        \n        partial_fails=\"\";\
                        \n        for pkg in $failed; do\
                        \n          if opam show -f x-ci-accept-failures: \"$pkg\" | grep -qF \"\\\"debian-13\\\"\"; then\
                        \n            echo \"A package failed and has been disabled for CI using the 'x-ci-accept-failures' field.\";\
                        \n          fi;\
                        \n          test \"$pkg\" != 'caper.0.9' && partial_fails=\"$partial_fails $pkg\";\
                        \n        done;\
                        \n        test \"${partial_fails}\" != \"\" && echo \"opam-repo-ci detected dependencies failing: ${partial_fails}\";\
                        \n        exit 1"))
The following actions will be performed:
=== recompile 1 package
  - recompile caper 0.9

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
Processing  1/4: [caper.0.9: extract]
-> retrieved caper.0.9  (cached)
Processing  2/4: [caper: bash]
+ /home/opam/.opam/opam-init/hooks/sandbox.sh "build" "bash" "-c" "CAPER_WITH_ENGLISH=yes ./build.sh caper.native" (CWD=/home/opam/.opam/5.4/.opam-switch/build/caper.0.9)
- building caper.native
- ... with English conversion support
- + ocamlfind ocamlc -config
- + ocamlfind ocamldep -package angstrom -package str -modules caper.ml > caper.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules aux.ml > aux.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules config.ml > config.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules html.ml > html.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules english/english_to_pcap_spec.ml > english/english_to_pcap_spec.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules english/english_parsing.ml > english/english_parsing.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules english/english_syntax.ml > english/english_syntax.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_syntax.cmo english/english_syntax.ml
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_syntax.ml > syntax/pcap_syntax.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_parsing.cmo english/english_parsing.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_parsing.cmo english/english_parsing.ml
- File "english/english_parsing.ml", lines 316-324, characters 15-35:
- 316 | ...............function
- 317 |            | "1st" | "first" -> return "1"
- 318 |            | "2nd" | "second" -> return "2"
- 319 |            | "3rd" | "third" -> return "3"
- 320 |            | "fourth" -> return "4"
- 321 |            | "fifth" -> return "5"
- 322 |            | "sixth" -> return "6"
- 323 |            | "seventh" -> return "7"
- 324 |            | "eighth" -> return "8"..
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_parsing.ml", line 457, characters 10-75:
- 457 |   >>= fun (used_it_variable, Relation_clause (comp, left_term, right_expr)) ->
-                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (used_it_variable,
-     (OfType _|ThatIs (_, _)|IsThatOf (_, _)|ThatHas (_, _, _)|Unit _|
-     ExaminingRelation_clause (_, _, Arithmetic (_, _), Arithmetic (_, _))))
- 
- File "english/english_parsing.ml", line 612, characters 19-75:
- 612 |     (fun sep es -> match sep with "and" -> And_expr es | "or" -> Or_expr es)
-                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_parsing.ml", lines 631-633, characters 2-61:
- 631 | ..match e with
- 632 |   | Or_expr _ -> return e
- 633 |   | And_expr _ -> fail "too many 'if and only if' connectors"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (True_expr|False_expr|Clause _|Not_expr _)
- 
- File "english/english_parsing.ml", lines 694-697, characters 25-50:
- 694 | .........................function
- 695 |   | Clause (Unit (UnidentifiedString "")) -> return expr
- 696 |   | Clause (Unit (UnidentifiedString rest)) ->
- 697 |       fail ("unparseable English: '" ^ rest ^ "'")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Clause
-       (Unit
-          (Phrase _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-          OrdinalReference (_, _, _, _)|TermList _))
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_syntax.cmo syntax/pcap_syntax.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap_spec.cmo english/english_to_pcap_spec.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/pcap_to_bpf.ml > pcap_to_bpf/pcap_to_bpf.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/block.ml > pcap_to_bpf/block.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o config.cmo config.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/inst.ml > pcap_to_bpf/inst.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/util.ml > pcap_to_bpf/util.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/headers.ml > pcap_to_bpf/headers.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/inst.cmo pcap_to_bpf/inst.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/inst.cmo pcap_to_bpf/inst.ml
- File "pcap_to_bpf/inst.ml", lines 159-169, characters 4-50:
- 159 | ....match v with
- 160 |     | X -> "x"
- 161 |     | True -> "true"
- 162 |     | False -> "false"
- 163 |     | Off idx -> Printf.sprintf "[%d]" idx
- ...
- 166 |     | Hexj num -> Printf.sprintf "#0x%x" num
- 167 |     | Lit num -> Printf.sprintf "%d" num
- 168 |     | Exp (val1,val2,operator) -> Printf.sprintf "(%s %s %s)" (helper val1) (operator_to_str operator) (helper val2)
- 169 |     | Offset v -> Printf.sprintf "[%s]" (helper v)...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: NilVal
- 
- File "pcap_to_bpf/inst.ml", lines 206-223, characters 18-59:
- 206 | ..................function
- 207 |   | No_cond -> "no_cond"
- 208 |   | Ip_Protochain_cond value -> pretty_format "ip protochain" (value_to_str value)
- 209 |   | Ip6_Protochain_cond value -> pretty_format "ip6 protochain" (value_to_str value)
- 210 |   | Icmp6_Protochain_cond value -> pretty_format "icmp6_protochain" (value_to_str value)
- ...
- 220 |   | Jle value -> pretty_format "jle" (value_to_str value)
- 221 |   | Jgt value -> pretty_format "jgt" (value_to_str value)
- 222 |   | Jge value -> pretty_format "jge" (value_to_str value)
- 223 |   | Jset value -> pretty_format "jset" (value_to_str value)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (True_cond|False_cond)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/headers.cmo pcap_to_bpf/headers.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/headers.cmo pcap_to_bpf/headers.ml
- File "pcap_to_bpf/headers.ml", line 85, characters 4-5:
- 85 |   | _ -> failwith "unsupported Layer"
-          ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/headers.ml", lines 88-98, characters 2-17:
- 88 | ..match p with
- 89 |   | L2 Ether -> 14
- 90 |   | L2_5 Vlan -> 4
- 91 |   | L2_5 Mpls -> 4
- 92 |   | L2 Fddi -> 14
- ...
- 95 |   | L4 Icmp -> 8
- 96 |   | L4 Icmp6 -> 8
- 97 |   | L3 Arp -> 28
- 98 |   | L3 Rarp -> 28
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: L4 (Tcp|Udp|Sctp)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/util.cmo pcap_to_bpf/util.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/util.cmo pcap_to_bpf/util.ml
- File "pcap_to_bpf/util.ml", lines 80-85, characters 2-120:
- 80 | ..match sf with
- 81 |   | Some {code = [Nil_op]; cond = No_cond; jt = None; jf = None;} -> Some {code = [Nil_op]; cond = No_cond; jt = None; jf = None;}
- 82 |   | Some {code = [Logical_And]; cond = True_cond; jf = sf2; jt = sf1} -> Some {code = [Logical_Or]; cond = True_cond; jf = negate sf2; jt = negate sf1;}
- 83 |   | Some {code = [Logical_Or]; cond = True_cond; jf = sf2; jt = sf1} -> Some {code = [Logical_And]; cond = True_cond; jf = negate sf2; jt = negate sf1;}
- 84 |   | Some {code = x; cond = y; jf = ret_false; jt = ret_true} -> Some {code = x; cond = y; jf = ret_true; jt = ret_false}
- 85 |   | Some {code = x; cond = y; jf = ret_true; jt = ret_false} -> Some {code = x; cond = y; jf = ret_false; jt = ret_true}
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: None
- 
- File "pcap_to_bpf/util.ml", line 85, characters 4-60:
- 85 |   | Some {code = x; cond = y; jf = ret_true; jt = ret_false} -> Some {code = x; cond = y; jf = ret_false; jt = ret_true}
-          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/util.ml", lines 125-129, characters 20-14:
- 125 | ....................function
- 126 |   | "ip" -> 12
- 127 |   | "arp" -> 14
- 128 |   | "rarp" -> 14
- 129 |   | "ip6" -> 8
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/util.ml", lines 131-135, characters 20-15:
- 131 | ....................function
- 132 |   | "ip" -> 16
- 133 |   | "arp" -> 24
- 134 |   | "rarp" -> 24
- 135 |   | "ip6" -> 24
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/util.ml", lines 138-142, characters 2-42:
- 138 | ..match net with
- 139 |   | [oct1] -> 0xff000000
- 140 |   | [oct1; oct2] -> 0xffff0000
- 141 |   | [oct1; oct2; oct3;] -> 0xffffff00
- 142 |   | [oct1; oct2; oct3; oct4] -> 0xffffffff
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::_::_::oct4::_::_
- 
- File "pcap_to_bpf/util.ml", lines 187-188, characters 4-87:
- 187 | ....match ipv6_piece with
- 188 |     | [x; y] -> Int.shift_left (int_of_string ("0x" ^ x)) 16 + int_of_string ("0x" ^ y)...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: x::y::_::_
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/optimizer/bpf_optimizer.ml > pcap_to_bpf/optimizer/bpf_optimizer.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/block.cmo pcap_to_bpf/block.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/optimizer/register.ml > pcap_to_bpf/optimizer/register.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/register.cmo pcap_to_bpf/optimizer/register.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/register.cmo pcap_to_bpf/optimizer/register.ml
- File "pcap_to_bpf/optimizer/register.ml", line 53, characters 4-5:
- 53 |   | _ -> failwith (Printf.sprintf "%s" (reg_to_str reg))
-          ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 56-57, characters 2-14:
- 56 | ..match reg with
- 57 |   | Reg v -> v
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (NilReg|Reg_exp (_, _, _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 109-125, characters 55-96:
- 109 | .......................................................function
- 110 |   | Lit n | Hex n | Hexj n -> Reg (Hex n)
- 111 |   | Off n -> Reg (Off n)
- 112 |   | Offset n -> Reg (Offset (get_val (regify a_reg x_reg n)))
- 113 |   | X -> x_reg
- ...
- 122 |     | Arith_and -> arith_and (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 123 |     | Arith_xor -> arith_xor (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 124 |     | Logical_shift_left -> logical_shift_left (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 125 |     | Logical_shift_right -> logical_shift_right (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (True|False|NilVal|Mem _)
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 166-178, characters 8-68:
- 166 | ........match cond1, cond2 with
- 167 |         | NilCond, _ -> if_insert tl c
- 168 |         | _, NilCond -> if_insert tl c
- 169 |         | Eq x, Eq y -> if x = y then Triv_True else Triv_False
- 170 |         | Eq x, Neq y -> if x = y then Triv_False else Triv_True
- ...
- 175 |         | Gt x, Gt y -> if x >= y then Triv_True else if_insert tl c
- 176 |         | Gt x, Ge y -> if x > y then Triv_True else if_insert tl c
- 177 |         | Ge x, Gt y -> if x > y then Triv_True else if_insert tl c
- 178 |         | Ge x, Ge y -> if x >= y then Triv_True else if_insert tl c
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Eq _, (Lt _|Le _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 184-235, characters 2-41:
- 184 | ..match opcode with
- 185 |   | No_op _ | Nil_op  -> a_reg, x_reg
- 186 |   | St (Mem n) ->
- 187 |     begin
- 188 |       memory.(n) <- a_reg;
- ...
- 232 |   | Rsh X ->  (logical_shift_right a_reg x_reg), x_reg
- 233 |   | Tax ->  a_reg, a_reg
- 234 |   | Txa ->  x_reg, x_reg
- 235 |   | Ret False | Ret True ->  a_reg, x_reg
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     St (X|True|False|NilVal|Off _|Offset _|Hex _|Hexj _|Lit _|Exp (_, _, _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 240-264, characters 4-7:
- 240 | ....begin
- 241 |       match jump_cond with
- 242 |       | Jeq (Lit n) | Jeq (Hex n) | Jeq (Hexj n) -> a_reg, x_reg, (Eq (Reg (Hex n)))
- 243 |       | Jneq (Lit n) | Jneq (Hex n) | Jneq (Hexj n) -> a_reg, x_reg, (Neq (Reg (Hex n)))
- 244 |       | Jne (Lit n) | Jne (Hex n) | Jne (Hexj n) -> a_reg, x_reg, (Neq (Reg (Hex n)))
- ...
- 261 |       | Ip_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 262 |       | Ip6_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 263 |       | Icmp6_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 264 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Jeq (True|False|NilVal|Off _|Offset _|Mem _|Exp (_, _, _))
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/icmp6.ml > pcap_to_bpf/protocol/icmp6.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/env.ml > pcap_to_bpf/env.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/protochain.ml > pcap_to_bpf/protocol/protochain.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/env.cmo pcap_to_bpf/env.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/protochain.cmo pcap_to_bpf/protocol/protochain.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/protochain.cmo pcap_to_bpf/protocol/protochain.ml
- File "pcap_to_bpf/protocol/protochain.ml", lines 93-113, characters 4-7:
-  93 | ....match headers with
-  94 |     | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _)->
-  95 |       Some {
-  96 |         code = [
-  97 |           Ldb (Off (sum_of_pred_headers + 9));
- ...
- 110 |         cond = Jeq (Hexj protochain_num);
- 111 |         jt = ret_true;
- 112 |         jf = ret_false
- 113 |       }
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- 
- File "pcap_to_bpf/protocol/protochain.ml", lines 126-130, characters 2-37:
- 126 | ..match headers with
- 127 |   | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _)->
- 128 |     gen_ip_protochain protochain_num
- 129 |   | Packet (_, _, L3 Ip6) | Segment (_, _, L3 Ip6, _)->
- 130 |     gen_ip6_protochain protochain_num
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/infix_to_postfix.ml > pcap_to_bpf/infix_to_postfix.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/pcap_to_tree.ml > pcap_to_bpf/pcap_to_tree.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/arp.ml > pcap_to_bpf/protocol/arp.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/host.ml > pcap_to_bpf/protocol/host.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/net.ml > pcap_to_bpf/protocol/net.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/host.cmo pcap_to_bpf/protocol/host.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/net.cmo pcap_to_bpf/protocol/net.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/net.cmo pcap_to_bpf/protocol/net.ml
- File "pcap_to_bpf/protocol/net.ml", lines 96-102, characters 4-7:
-  96 | ....begin
-  97 |       match String.split_on_char '/' net with
-  98 |       | net' :: [mask] ->
-  99 |         let mask' = int_of_string mask in
- 100 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 101 |         ipv6_src_net net'' mask' headers
- 102 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: net'::mask::_::_
- 
- File "pcap_to_bpf/protocol/net.ml", lines 83-102, characters 2-7:
-  83 | ..match protocol with
-  84 |   | "ip" | "arp" | "rarp" ->
-  85 |     let _net = String.split_on_char '.' net in
-  86 |     Some {
-  87 |       code = [
- ...
-  99 |         let mask' = int_of_string mask in
- 100 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 101 |         ipv6_src_net net'' mask' headers
- 102 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/protocol/net.ml", lines 119-125, characters 4-7:
- 119 | ....begin
- 120 |       match String.split_on_char '/' net with
- 121 |       | net' :: [mask] ->
- 122 |         let mask' = int_of_string mask in
- 123 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 124 |         ipv6_dst_net net'' mask' headers
- 125 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: net'::mask::_::_
- 
- File "pcap_to_bpf/protocol/net.ml", lines 106-125, characters 2-7:
- 106 | ..match protocol with
- 107 |   | "ip" | "arp" | "rarp" ->
- 108 |     let _net = String.split_on_char '.' net in
- 109 |     Some {
- 110 |       code = [
- ...
- 122 |         let mask' = int_of_string mask in
- 123 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 124 |         ipv6_dst_net net'' mask' headers
- 125 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/bound.ml > pcap_to_bpf/protocol/bound.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/ether.ml > pcap_to_bpf/protocol/ether.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/eval.ml > pcap_to_bpf/eval.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ether.cmo pcap_to_bpf/protocol/ether.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/icmp.ml > pcap_to_bpf/protocol/icmp.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp6.cmo pcap_to_bpf/protocol/icmp6.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp6.cmo pcap_to_bpf/protocol/icmp6.ml
- File "pcap_to_bpf/protocol/icmp6.ml", lines 186-189, characters 2-43:
- 186 | ..match icmp6_info with
- 187 |   | "protochain" :: [protochain_num] ->
- 188 |     Env.generate_icmp6_protochain := true;
- 189 |     icmp6_protochain protochain_num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     "protochain"::protochain_num::_::_
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/infix_to_postfix.cmo pcap_to_bpf/infix_to_postfix.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/infix_to_postfix.cmo pcap_to_bpf/infix_to_postfix.ml
- File "pcap_to_bpf/infix_to_postfix.ml", lines 73-78, characters 6-60:
- 73 | ......match block with
- 74 |       | head :: rest ->
- 75 |         if is_square_open head || is_square_close head then
- 76 |           let square_cnt = count_square 0 0 head in
- 77 |           parse_square_bracket (head :: ret) rest (counter + (fst square_cnt) - (snd square_cnt))
- 78 |         else parse_square_bracket (head :: ret) rest counter
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/ip.ml > pcap_to_bpf/protocol/ip.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/ip6.ml > pcap_to_bpf/protocol/ip6.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/sctp.ml > pcap_to_bpf/protocol/sctp.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/port.ml > pcap_to_bpf/protocol/port.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip6.cmo pcap_to_bpf/protocol/ip6.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/portrange.ml > pcap_to_bpf/protocol/portrange.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/port.cmo pcap_to_bpf/protocol/port.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/portrange.cmo pcap_to_bpf/protocol/portrange.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/tcp.ml > pcap_to_bpf/protocol/tcp.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/udp.ml > pcap_to_bpf/protocol/udp.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp.cmo pcap_to_bpf/protocol/icmp.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp.cmo pcap_to_bpf/protocol/icmp.ml
- File "pcap_to_bpf/protocol/icmp.ml", lines 95-96, characters 2-78:
- 95 | ..match icmp_info with
- 96 |   | "protochain" :: [protochain_num] -> icmp_protochain protochain_num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     "protochain"::protochain_num::_::_
- 
- File "pcap_to_bpf/protocol/icmp.ml", line 72, characters 6-19:
- 72 |   let source_quench = Some {code = []; cond = Jeq (Hexj 0x4); jt = ret_true; jf = ret_false} in
-            ^^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable source_quench.
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip.cmo pcap_to_bpf/protocol/ip.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip.cmo pcap_to_bpf/protocol/ip.ml
- File "pcap_to_bpf/protocol/ip.ml", lines 41-42, characters 2-157:
- 41 | ..match headers with
- 42 |   | Packet (x, _, L3 Ip) | Segment (x, _, L3 Ip, _) -> Ldxb (Exp ((Lit 4), (Exp ((Off (sum_of_header headers "ip")), (Hex 0xf), Arith_and)), Multiplication))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (x, _, L3 (Ip6|Arp|Rarp))
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/sctp.cmo pcap_to_bpf/protocol/sctp.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/tcp.cmo pcap_to_bpf/protocol/tcp.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/udp.cmo pcap_to_bpf/protocol/udp.ml
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/mpls.ml > pcap_to_bpf/protocol/mpls.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/rarp.ml > pcap_to_bpf/protocol/rarp.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/protocol/vlan.ml > pcap_to_bpf/protocol/vlan.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/arp.cmo pcap_to_bpf/protocol/arp.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/bound.cmo pcap_to_bpf/protocol/bound.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/eval.cmo pcap_to_bpf/eval.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/eval.cmo pcap_to_bpf/eval.ml
- File "pcap_to_bpf/eval.ml", lines 73-82, characters 13-21:
- 73 | .............function
- 74 |       | "+" -> Add X
- 75 |       | "-" -> Sub X
- 76 |       | "*" -> Mul X
- 77 |       | "/" -> Div X
- 78 |       | "%" -> Mod X
- 79 |       | "&" -> And X
- 80 |       | "|" -> Or X
- 81 |       | "<<" -> Lsh X
- 82 |       | ">>" -> Rsh X...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", lines 83-87, characters 4-63:
- 83 | ....match operator, num_op, proto_op with
- 84 |     | "+", _, _ ->  eval_proto_num operator proto_op num_op headers
- 85 |     | "*", _, _ ->  eval_proto_num operator proto_op num_op headers
- 86 |     | other, Num n, List x -> List (x @ [Tax; Ld (Lit n); op other])
- 87 |     | other, Num n, x ->  List ([x; Tax; Ld (Lit n); op other])
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     ("",
-     (Tax|Txa|Logical_And|Logical_Or|Nil_op|Ld _|Ldi _|Ldh _|Ldb _|Ldx _|
-     Ldxi _|Ldxb _|St _|Stx _|Add _|Sub _|Mul _|Div _|Mod _|Neg _|And _|
-     Or _|Xor _|Lsh _|Rsh _|No_op _|List _|Ret _), _)
- 
- File "pcap_to_bpf/eval.ml", lines 91-100, characters 13-21:
-  91 | .............function
-  92 |       | "+" -> Add X
-  93 |       | "-" -> Sub X
-  94 |       | "*" -> Mul X
-  95 |       | "/" -> Div X
-  96 |       | "%" -> Mod X
-  97 |       | "&" -> And X
-  98 |       | "|" -> Or X
-  99 |       | "<<" -> Lsh X
- 100 |       | ">>" -> Rsh X...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", lines 143-148, characters 4-49:
- 143 | ....match comparison with
- 144 |     | "=" | "==" | "!=" -> comp_opcode_int comparison op num headers
- 145 |     | "<" -> comp_opcode_int ">" op num headers
- 146 |     | ">" -> comp_opcode_int "<" op num headers
- 147 |     | ">=" -> comp_opcode_int "<=" op num headers
- 148 |     | "<=" -> comp_opcode_int ">=" op num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", line 188, characters 4-5:
- 188 |   | _ -> failwith "Eval.eval_pcaps"
-           ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/eval.ml", lines 192-213, characters 2-42:
- 192 | ..match headers with
- 193 |   | Frame (l2, _) | Packet (l2, _, _)  | Segment (l2, _, _, _) ->
- 194 |     if l2 <> _protocol then failwith "Eval.l2_expr_size" else
- 195 |     if is_digit expr then
- 196 |       let inst =
- ...
- 210 |         | 4 -> Ld (Offset (Exp (X, (Lit (0)), Addition)))
- 211 |         | _ -> failwith "Eval.l2_expr_size ( 1, 2, 4 )"
- 212 |       in
- 213 |       List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Nil
- 
- File "pcap_to_bpf/eval.ml", lines 217-239, characters 2-44:
- 217 | ..match headers with
- 218 |   | Packet (_, _,  l3)  | Segment (_, _ ,l3, _) ->
- 219 |     if l3 <> _protocol then failwith "Eval.l3_expr_size" else
- 220 |       let pred_header_size = sum_of_header headers protocol in
- 221 |       if is_digit expr then
- ...
- 236 |           | 4 -> Ld (Offset (Exp (X, (Lit (pred_header_size)), Addition)))
- 237 |           | _ -> failwith "Eval.l3_expr_size"
- 238 |         in
- 239 |         List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Nil|Frame (_, _))
- 
- File "pcap_to_bpf/eval.ml", lines 243-283, characters 2-42:
- 243 | ..match headers with
- 244 |   | Segment (_, _, L3 Ip, l4) ->
- 245 |     if l4 <> _protocol then failwith "Eval.l4_expr_size" else
- 246 |       let pred_header_size = sum_of_header headers "ip" in
- 247 |       if is_digit expr then
- ...
- 280 |         | 4 -> Ld (Offset (Exp (X, (Lit (sum_of_header headers protocol)), Addition)))
- 281 |         | _ -> failwith "Eval.l4_expr_size"
- 282 |       in
- 283 |       List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Segment (_, _, L3 (Arp|Rarp), _)
- 
- File "pcap_to_bpf/eval.ml", lines 287-294, characters 2-80:
- 287 | ..match headers with
- 288 |   | Frame (l2, _) | Packet (l2, _, _) | Segment (l2, _, _, _) ->
- 289 |     if _protocol <> l2 then failwith "Eval.l2_offset" else
- 290 |     if is_digit idx then
- 291 |       Ldb (Off (int_of_string idx))
- 292 |     else
- 293 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 294 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, (Lit (0)), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Nil
- 
- File "pcap_to_bpf/eval.ml", lines 298-305, characters 2-109:
- 298 | ..match headers with
- 299 |   | Packet (l2, _, l3) | Segment (l2, _, l3, _) ->
- 300 |     if _protocol <> l3 then failwith "Eval.l3_offset" else
- 301 |     if is_digit idx then
- 302 |       Ldb (Off (sum_of_header headers protocol + int_of_string idx))
- 303 |     else
- 304 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 305 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, (Lit (sum_of_header headers protocol)), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Nil|Frame (_, _))
- 
- File "pcap_to_bpf/eval.ml", lines 309-324, characters 2-107:
- 309 | ..match headers with
- 310 |   | Segment (l2, _, L3 Ip, l4) ->
- 311 |     let pred_header_size = sum_of_header headers "ip" in
- 312 |     if _protocol <> l4 then failwith "Eval.l4_offset" else
- 313 |     if is_digit idx then
- ...
- 321 |       Ldb (Off (sum_of_header headers protocol + int_of_string idx))
- 322 |     else
- 323 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 324 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, Lit (sum_of_header headers protocol), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Segment (_, _, L3 (Arp|Rarp), _)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/mpls.cmo pcap_to_bpf/protocol/mpls.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/mpls.cmo pcap_to_bpf/protocol/mpls.ml
- File "pcap_to_bpf/protocol/mpls.ml", lines 36-47, characters 2-34:
- 36 | ..match mpls_info, l2_5_header with
- 37 |   | [], L2_5 Mpls :: [] -> is_mpls headers
- 38 |   | [], L2_5 Mpls :: L2_5 Vlan :: l2_5 -> is_mpls headers
- 39 |   | [], L2_5 Mpls :: L2_5 Mpls :: l2_5 -> is_bottom headers
- 40 |   | [mpls_val], L2_5 Mpls :: [] | [mpls_val], L2_5 Mpls :: L2_5 Vlan :: _ ->
- ...
- 44 |   | [mpls_val], L2_5 Mpls :: L2_5 Mpls :: l2_5 ->
- 45 |     let _mpls_val = mpls_val_shift (int_of_string mpls_val) in
- 46 |     let sf = Some {code = [Ld (Off (get_protocol_size (get_l2 headers) + get_l2_5_size headers - 4)); And (Hexj 0xfffff000)]; cond = Jeq (Hexj (_mpls_val)); jt = ret_true; jf = ret_false}in
- 47 |     conjoin (is_bottom headers) sf
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     ([], L2_5 Mpls::(L2 _|L3 _|L4 _)::_)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/rarp.cmo pcap_to_bpf/protocol/rarp.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/vlan.cmo pcap_to_bpf/protocol/vlan.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/vlan.cmo pcap_to_bpf/protocol/vlan.ml
- File "pcap_to_bpf/protocol/vlan.ml", lines 39-189, characters 2-79:
-  39 | ..match vlan_info, headers with
-  40 |   (*    [snipped from <linux/filter.h>]
-  41 |     Git hash: 6f52b16c5b29b89d92c0e7236f4655dc8491ad70
-  42 |     https://github.com/torvalds/linux/blob/master/include/uapi/linux/filter.h
-  43 | 
- ...
- 186 |           jf = ret_false;
- 187 |         }
- 188 |     in
- 189 |     conjoin (disjoin vlan_id_8100 (disjoin vlan_id_88a8 vlan_id_9100)) vlan_val
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ("SKF_AD"::_::_, _)
- + ocamlfind ocamldep -package angstrom -package str -modules pcap_to_bpf/tree_to_bpf.ml > pcap_to_bpf/tree_to_bpf.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/bpf_optimizer.cmo pcap_to_bpf/optimizer/bpf_optimizer.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/bpf_optimizer.cmo pcap_to_bpf/optimizer/bpf_optimizer.ml
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", lines 53-59, characters 2-65:
- 53 | ..match blocks with
- 54 |   | b :: bs ->
- 55 |     match b with
- 56 |     | {key = _; opcodes = [Ret True]; cond = _; jt = -1; jf = -1}
- 57 |     | {key = _; opcodes = [Ret False]; cond = _; jt = -1; jf = -1} -> ret
- 58 |     | {key = key; opcodes = opcodes; cond = cond; jt = jt; jf = jf} ->
- 59 |       get_pkt_acpt_line_helper (ret + List.length opcodes + 1) bs
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 187, characters 14-19:
- 187 |           let new_a = {key = a_key; opcodes = a_opcodes; cond = a_cond; jt = a_jt; jf = a_jf} in
-                     ^^^^^
- Warning 26 [unused-var]: unused variable new_a.
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 486, characters 16-22:
- 486 |             let jf_blk = Hashtbl.find blocks_tbl b.jf in
-                       ^^^^^^
- Warning 26 [unused-var]: unused variable jf_blk.
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 501, characters 16-28:
- 501 |             let cur_blk_eval = Hashtbl.find blocks_eval_tbl b.key in
-                       ^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable cur_blk_eval.
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_tree.cmo pcap_to_bpf/pcap_to_tree.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_tree.cmo pcap_to_bpf/pcap_to_tree.ml
- File "pcap_to_bpf/pcap_to_tree.ml", lines 53-58, characters 4-35:
- 53 | ....match protocol with
- 54 |     | "icmp" -> icmp_to_sock_filter
- 55 |     | "tcp" -> tcp_to_sock_filter
- 56 |     | "udp" -> udp_to_sock_filter
- 57 |     | "icmp6" -> icmp6_to_sock_filter
- 58 |     | "sctp" -> sctp_to_sock_filter
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 61-66, characters 4-19:
- 61 | ....match protocol with
- 62 |     | "icmp" -> 1
- 63 |     | "tcp" -> 6
- 64 |     | "udp" -> 17
- 65 |     | "icmp6" -> 58
- 66 |     | "sctp" -> 132
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 78-80, characters 6-88:
- 78 | ......match headers with
- 79 |       | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _) -> sum_of_header headers "ip"
- 80 |       | Packet (_, _, L3 Ip6) | Segment (_, _, L3 Ip6, _) -> sum_of_header headers "ip6"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 69-98, characters 2-37:
- 69 | ..match !Env.protochain_list, protocol with
- 70 |   | [], _
- 71 |   | 1 :: _, "icmp"
- 72 |   | 6 :: _, "tcp"
- 73 |   | 17 :: _, "udp"
- ...
- 95 |         failwith "not_supported protochain_bridge"
- 96 |     in
- 97 |     Env.protochain_list := protocol_num :: !Env.protochain_list;
- 98 |     conjoin protochain_bridge main_sf
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (1::_, "")
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/tree_to_bpf.cmo pcap_to_bpf/tree_to_bpf.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o html.cmo html.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_bpf.cmo pcap_to_bpf/pcap_to_bpf.ml
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/bitvector.ml > syntax/bitvector.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules bitvector_sizing.ml > bitvector_sizing.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o aux.cmo aux.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/bitvector.cmo syntax/bitvector.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/bitvector.cmo syntax/bitvector.ml
- File "syntax/bitvector.ml", lines 83-189, characters 2-9:
-  83 | ..match bv_e with
-  84 |   | Hole (_, s) -> s
-  85 |   | Const (Some w, n) ->
-  86 |       assert (exponentiate 2 w > n);
-  87 |       let nibble_width =
- ...
- 186 |       "((_ zero_extend " ^
- 187 |       string_of_int w ^ ") " ^
- 188 |       string_of_bv_exp bv_e' ^
- 189 |       ")"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Const (None, _)
- 
- File "syntax/bitvector.ml", line 87, characters 10-22:
- 87 |       let nibble_width =
-                ^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable nibble_width.
- + ocamlfind ocamldep -package angstrom -package str -modules cli.ml > cli.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules contract.ml > contract.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules layering.ml > layering.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules names.ml > names.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_syntax_aux.ml > syntax/pcap_syntax_aux.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/string_features.ml > syntax/string_features.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/string_features.cmo syntax/string_features.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_syntax_aux.cmo syntax/pcap_syntax_aux.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o layering.cmo layering.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o names.cmo names.ml
- + ocamlfind ocamldep -package angstrom -package str -modules english/english_to_pcap.ml > english/english_to_pcap.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules english/english_to_string.ml > english/english_to_string.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules parsing_support.ml > parsing_support.ml.depends
- + /home/opam/.opam/5.4/bin/ocamllex.opt -q syntax/pcap_lexer.mll
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_lexer.ml > syntax/pcap_lexer.ml.depends
- + menhir --raw-depend --ocamldep 'ocamlfind ocamldep -modules' syntax/pcap_parser.mly > syntax/pcap_parser.mly.depends
- + menhir --ocamlc 'ocamlfind ocamlc -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol' --infer syntax/pcap_parser.mly
- + menhir --ocamlc 'ocamlfind ocamlc -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol' --infer syntax/pcap_parser.mly
- Warning: one state has reduce/reduce conflicts.
- Warning: one reduce/reduce conflict was arbitrarily resolved.
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_parser.mli > syntax/pcap_parser.mli.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_parser.cmi syntax/pcap_parser.mli
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_lexer.cmo syntax/pcap_lexer.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_string.cmo english/english_to_string.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_string.cmo english/english_to_string.ml
- File "english/english_to_string.ml", lines 73-111, characters 2-46:
-  73 | ..match c with
-  74 |   | OfType t -> (if logically_positive then "of type" else "not of type") ^ " " ^ string_of_term t
-  75 |   | ThatIs (t1, t2) ->
-  76 |       string_of_term t1 ^ " "
-  77 |       ^ (if logically_positive then "that is" else "that is not")
- ...
- 108 |   | ExaminingRelation_clause (Phrase comp, it_var, left, right) ->
- 109 |       let it_str = string_of_term it_var in
- 110 |       "examining" ^ " " ^ it_str ^ ":" ^ " " ^ string_of_arith_val left ^ " "
- 111 |       ^ comp ^ " " ^ string_of_arith_val right
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Relation_clause
-       ((UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-        OrdinalReference (_, _, _, _)|TermList _),
-       _, _)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o parsing_support.cmo parsing_support.ml
- + ocamlfind ocamldep -package angstrom -package str -modules expand.ml > expand.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules simplifire.ml > simplifire.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o contract.cmo contract.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o simplifire.cmo simplifire.ml
- + ocamlfind ocamldep -package angstrom -package str -modules english/pcap_to_english.ml > english/pcap_to_english.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules english/pcap_to_english_spec.ml > english/pcap_to_english_spec.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english_spec.cmo english/pcap_to_english_spec.ml
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_wellformed.ml > syntax/pcap_wellformed.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pretty_printing.ml > pretty_printing.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules pseudonymise.ml > pseudonymise.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules reorder.ml > reorder.ml.depends
- + ocamlfind ocamldep -package angstrom -package str -modules translate.ml > translate.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o bitvector_sizing.cmo bitvector_sizing.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o bitvector_sizing.cmo bitvector_sizing.ml
- File "bitvector_sizing.ml", lines 34-36, characters 6-37:
- 34 | ......let (bv_e2', Some bv_e2_w) = width_of_bv_exp bv_e2 in
- 35 |       assert (w = bv_e1_w + bv_e2_w);
- 36 |       Concat (Some w, bv_e1', bv_e2')
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (bv_e2', None)
- 
- File "bitvector_sizing.ml", lines 33-36, characters 6-37:
- 33 | ......let (bv_e1', Some bv_e1_w) = width_of_bv_exp bv_e1 in
- 34 |       let (bv_e2', Some bv_e2_w) = width_of_bv_exp bv_e2 in
- 35 |       assert (w = bv_e1_w + bv_e2_w);
- 36 |       Concat (Some w, bv_e1', bv_e2')
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (bv_e1', None)
- 
- File "bitvector_sizing.ml", lines 170-185, characters 2-137:
- 170 | ..match bv_e with
- 171 |   | Hole (w, _)
- 172 |   | Const (w, _) -> (bv_e, w)
- 173 |   | BNot (w_opt, bv_e') -> width_of_mono (w_opt, bv_e') (fun (x1, x2) -> BNot (x1, x2))
- 174 |   | BNegate (w_opt, bv_e') -> width_of_mono (w_opt, bv_e') (fun (x1, x2) -> BNegate (x1, x2))
- ...
- 182 |   | BMod (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> BMod (w_opt, bv_e1, bv_e2))
- 183 |   | BMinus (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> BMinus (w_opt, bv_e1, bv_e2))
- 184 |   | ShLeft (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> ShLeft (w_opt, bv_e1, bv_e2))
- 185 |   | LShRight (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> LShRight (w_opt, bv_e1, bv_e2))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (Concat (_, _, _)|Extract (_, _, _)|ZeroExtend (_, _, _))
- 
- File "bitvector_sizing.ml", line 224, characters 12-19:
- 224 |         let bv_e1'', bv_e2'' =
-                   ^^^^^^^
- Warning 26 [unused-var]: unused variable bv_e1''.
- 
- File "bitvector_sizing.ml", line 224, characters 21-28:
- 224 |         let bv_e1'', bv_e2'' =
-                            ^^^^^^^
- Warning 26 [unused-var]: unused variable bv_e2''.
- + ocamlfind ocamldep -package angstrom -package str -modules prim_translate.ml > prim_translate.ml.depends
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o prim_translate.cmo prim_translate.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o cli.cmo cli.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap.cmo english/english_to_pcap.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap.cmo english/english_to_pcap.ml
- File "english/english_to_pcap.ml", lines 28-40, characters 2-9:
- 28 | ..match ph with
- 29 |   | Phrase ph_s ->
- 30 |       begin
- 31 |         match
- 32 |           ( proto_keyword_of_engl_string ph_s,
- ...
- 37 |         | _, Some (DirField d), _ -> Ok (None, Some d, None)
- 38 |         | _, _, Some (TypField t) -> Ok (None, None, Some t)
- 39 |         | _ -> Error ("invalid field (proto/dir/typ) value: '" ^ ph_s ^ "'")
- 40 |       end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 49-56, characters 10-13:
- 49 | ..........begin
- 50 |             match t with
- 51 |             | Phrase ph_s -> (
- 52 |                 match (dir_keyword_of_engl_string ph_s, typ_keyword_of_engl_string ph_s) with
- 53 |                 | Some (DirField d), _ -> Ok (Some p, Some d, None)
- 54 |                 | _, Some (TypField t) -> Ok (Some p, None, Some t)
- 55 |                 | _ -> Error ("invalid field (dir/typ) value: '" ^ ph_s ^ "'"))
- 56 |           end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 58-64, characters 10-13:
- 58 | ..........begin
- 59 |             match t with
- 60 |             | Phrase ph_s -> (
- 61 |                 match typ_keyword_of_engl_string ph_s with
- 62 |                 | Some (TypField t) -> Ok (p_opt, Some d, Some t)
- 63 |                 | _ -> Error ("invalid field (typ) value: '" ^ ph_s ^ "'"))
- 64 |           end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 105-112, characters 6-26:
- 105 | ......match vals with
- 106 |       | Ok (v :: []) -> Ok (Primitive (f, v))
- 107 |       | Ok (v1 :: vs) ->
- 108 |           (* a disjunction of the form "<proto> <value1> || <value2> || <value3> || ..." *)
- 109 |           let f0 = (None, None, None) in
- 110 |           Ok
- 111 |             (Or (Primitive (f, v1) :: List.map (fun v -> Primitive (f0, v)) vs))
- 112 |       | Error e -> Error e.
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Ok []
- 
- File "english/english_to_pcap.ml", lines 122-125, characters 12-42:
- 122 | ............match ordinal_name_s with
- 123 |             | "byte" -> ""
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_to_pcap.ml", lines 117-127, characters 76-63:
- 117 | ............................................................................(
- 118 |       match field_of_phrase_term (Phrase collection_name) with
- 119 |       | Ok (Some p, _, _) ->
- 120 |           let header_name_s = Pcap_syntax_aux.string_of_proto p in
- 121 |           let no_bytes =
- ...
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- 126 |           in
- 127 |           " " ^ header_name_s ^ "[" ^ number ^ no_bytes ^ "] ")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Ok (None, _, _)
- 
- File "english/english_to_pcap.ml", lines 116-127, characters 2-63:
- 116 | ..match ord_ref with
- 117 |   | OrdinalReference (number, ordinal_name_s, collection_name, "header") -> (
- 118 |       match field_of_phrase_term (Phrase collection_name) with
- 119 |       | Ok (Some p, _, _) ->
- 120 |           let header_name_s = Pcap_syntax_aux.string_of_proto p in
- ...
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- 126 |           in
- 127 |           " " ^ header_name_s ^ "[" ^ number ^ no_bytes ^ "] ")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     OrdinalReference (number, ordinal_name_s, collection_name, "")
- 
- File "english/english_to_pcap.ml", lines 134-135, characters 10-68:
- 134 | ..........match l with
- 135 |           | OrdinalReference _ -> string_of_ordinal_reference_term l
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (Phrase _|UnidentifiedString _|With_term (_, _, _)|
-     OfSize_term (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 157-159, characters 12-15:
- 157 | ............begin
- 158 |               match fld with Ok f -> Ok (Primitive (f, Nothing))
- 159 |             end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Error _
- 
- File "english/english_to_pcap.ml", lines 167-169, characters 12-15:
- 167 | ............begin
- 168 |               match fld with Ok f -> Ok (Primitive (f, Nothing))
- 169 |             end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Error _
- 
- File "english/english_to_pcap.ml", lines 151-188, characters 2-80:
- 151 | ..match c with
- 152 |   | OfType r -> 
- 153 |       begin
- 154 |         match r with
- 155 |         | Phrase _ ->
- ...
- 185 |       let relation_s = left_arith_s ^ " " ^ comp_s ^ " " ^ right_arith_s in
- 186 |       (* FIXME - can't check for syntax errors here *)
- 187 |       Ok (Parsing_support.parse_string relation_s)
- 188 |   | Unit (UnidentifiedString x) -> Ok (Primitive ((None, None, None), String x))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Relation_clause
-       ((UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-        OrdinalReference (_, _, _, _)|TermList _),
-       _, _)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o expand.cmo expand.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english.cmo english/pcap_to_english.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english.cmo english/pcap_to_english.ml
- File "english/pcap_to_english.ml", lines 109-116, characters 16-47:
- 109 | ................(
- 110 |           match value with
- 111 |           | Phrase val_s ->
- 112 |               Ok
- 113 |                 (Relation_clause
- 114 |                    ( Phrase "is less than or equal to",
- 115 |                      Arithmetic ("len", []),
- 116 |                      Arithmetic (val_s, []) )))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/pcap_to_english.ml", lines 117-124, characters 19-47:
- 117 | ...................(
- 118 |           match value with
- 119 |           | Phrase val_s ->
- 120 |               Ok
- 121 |                 (Relation_clause
- 122 |                    ( Phrase "is greater than or equal to",
- 123 |                      Arithmetic ("len", []),
- 124 |                      Arithmetic (val_s, []) )))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_wellformed.cmo syntax/pcap_wellformed.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pretty_printing.cmo pretty_printing.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pseudonymise.cmo pseudonymise.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o reorder.cmo reorder.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o reorder.cmo reorder.ml
- File "reorder.ml", line 31, characters 4-19:
- 31 |     int_of_string s;
-          ^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- 
- File "reorder.ml", line 33, characters 14-31:
- 33 |   with Failure("int_of_string") -> false
-                    ^^^^^^^^^^^^^^^^^
- Warning 52 [fragile-literal-pattern]: Code should not depend on the actual
-   values of this constructor's arguments.
-   They are only for information and may change in future versions.
-   (see manual section 13.5.3)
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o translate.cmo translate.ml
- + ocamlfind ocamlc -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o caper.cmo caper.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_syntax.cmx english/english_syntax.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_parsing.cmx english/english_parsing.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_parsing.cmx english/english_parsing.ml
- File "english/english_parsing.ml", lines 316-324, characters 15-35:
- 316 | ...............function
- 317 |            | "1st" | "first" -> return "1"
- 318 |            | "2nd" | "second" -> return "2"
- 319 |            | "3rd" | "third" -> return "3"
- 320 |            | "fourth" -> return "4"
- 321 |            | "fifth" -> return "5"
- 322 |            | "sixth" -> return "6"
- 323 |            | "seventh" -> return "7"
- 324 |            | "eighth" -> return "8"..
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_parsing.ml", line 457, characters 10-75:
- 457 |   >>= fun (used_it_variable, Relation_clause (comp, left_term, right_expr)) ->
-                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (used_it_variable,
-     (OfType _|ThatIs (_, _)|IsThatOf (_, _)|ThatHas (_, _, _)|Unit _|
-     ExaminingRelation_clause (_, _, Arithmetic (_, _), Arithmetic (_, _))))
- 
- File "english/english_parsing.ml", line 612, characters 19-75:
- 612 |     (fun sep es -> match sep with "and" -> And_expr es | "or" -> Or_expr es)
-                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_parsing.ml", lines 631-633, characters 2-61:
- 631 | ..match e with
- 632 |   | Or_expr _ -> return e
- 633 |   | And_expr _ -> fail "too many 'if and only if' connectors"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (True_expr|False_expr|Clause _|Not_expr _)
- 
- File "english/english_parsing.ml", lines 694-697, characters 25-50:
- 694 | .........................function
- 695 |   | Clause (Unit (UnidentifiedString "")) -> return expr
- 696 |   | Clause (Unit (UnidentifiedString rest)) ->
- 697 |       fail ("unparseable English: '" ^ rest ^ "'")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Clause
-       (Unit
-          (Phrase _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-          OrdinalReference (_, _, _, _)|TermList _))
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_syntax.cmx syntax/pcap_syntax.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap_spec.cmx english/english_to_pcap_spec.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o config.cmx config.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/inst.cmx pcap_to_bpf/inst.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/inst.cmx pcap_to_bpf/inst.ml
- File "pcap_to_bpf/inst.ml", lines 159-169, characters 4-50:
- 159 | ....match v with
- 160 |     | X -> "x"
- 161 |     | True -> "true"
- 162 |     | False -> "false"
- 163 |     | Off idx -> Printf.sprintf "[%d]" idx
- ...
- 166 |     | Hexj num -> Printf.sprintf "#0x%x" num
- 167 |     | Lit num -> Printf.sprintf "%d" num
- 168 |     | Exp (val1,val2,operator) -> Printf.sprintf "(%s %s %s)" (helper val1) (operator_to_str operator) (helper val2)
- 169 |     | Offset v -> Printf.sprintf "[%s]" (helper v)...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: NilVal
- 
- File "pcap_to_bpf/inst.ml", lines 206-223, characters 18-59:
- 206 | ..................function
- 207 |   | No_cond -> "no_cond"
- 208 |   | Ip_Protochain_cond value -> pretty_format "ip protochain" (value_to_str value)
- 209 |   | Ip6_Protochain_cond value -> pretty_format "ip6 protochain" (value_to_str value)
- 210 |   | Icmp6_Protochain_cond value -> pretty_format "icmp6_protochain" (value_to_str value)
- ...
- 220 |   | Jle value -> pretty_format "jle" (value_to_str value)
- 221 |   | Jgt value -> pretty_format "jgt" (value_to_str value)
- 222 |   | Jge value -> pretty_format "jge" (value_to_str value)
- 223 |   | Jset value -> pretty_format "jset" (value_to_str value)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (True_cond|False_cond)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/headers.cmx pcap_to_bpf/headers.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/headers.cmx pcap_to_bpf/headers.ml
- File "pcap_to_bpf/headers.ml", line 85, characters 4-5:
- 85 |   | _ -> failwith "unsupported Layer"
-          ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/headers.ml", lines 88-98, characters 2-17:
- 88 | ..match p with
- 89 |   | L2 Ether -> 14
- 90 |   | L2_5 Vlan -> 4
- 91 |   | L2_5 Mpls -> 4
- 92 |   | L2 Fddi -> 14
- ...
- 95 |   | L4 Icmp -> 8
- 96 |   | L4 Icmp6 -> 8
- 97 |   | L3 Arp -> 28
- 98 |   | L3 Rarp -> 28
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: L4 (Tcp|Udp|Sctp)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/util.cmx pcap_to_bpf/util.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/util.cmx pcap_to_bpf/util.ml
- File "pcap_to_bpf/util.ml", lines 80-85, characters 2-120:
- 80 | ..match sf with
- 81 |   | Some {code = [Nil_op]; cond = No_cond; jt = None; jf = None;} -> Some {code = [Nil_op]; cond = No_cond; jt = None; jf = None;}
- 82 |   | Some {code = [Logical_And]; cond = True_cond; jf = sf2; jt = sf1} -> Some {code = [Logical_Or]; cond = True_cond; jf = negate sf2; jt = negate sf1;}
- 83 |   | Some {code = [Logical_Or]; cond = True_cond; jf = sf2; jt = sf1} -> Some {code = [Logical_And]; cond = True_cond; jf = negate sf2; jt = negate sf1;}
- 84 |   | Some {code = x; cond = y; jf = ret_false; jt = ret_true} -> Some {code = x; cond = y; jf = ret_true; jt = ret_false}
- 85 |   | Some {code = x; cond = y; jf = ret_true; jt = ret_false} -> Some {code = x; cond = y; jf = ret_false; jt = ret_true}
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: None
- 
- File "pcap_to_bpf/util.ml", line 85, characters 4-60:
- 85 |   | Some {code = x; cond = y; jf = ret_true; jt = ret_false} -> Some {code = x; cond = y; jf = ret_false; jt = ret_true}
-          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/util.ml", lines 125-129, characters 20-14:
- 125 | ....................function
- 126 |   | "ip" -> 12
- 127 |   | "arp" -> 14
- 128 |   | "rarp" -> 14
- 129 |   | "ip6" -> 8
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/util.ml", lines 131-135, characters 20-15:
- 131 | ....................function
- 132 |   | "ip" -> 16
- 133 |   | "arp" -> 24
- 134 |   | "rarp" -> 24
- 135 |   | "ip6" -> 24
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/util.ml", lines 138-142, characters 2-42:
- 138 | ..match net with
- 139 |   | [oct1] -> 0xff000000
- 140 |   | [oct1; oct2] -> 0xffff0000
- 141 |   | [oct1; oct2; oct3;] -> 0xffffff00
- 142 |   | [oct1; oct2; oct3; oct4] -> 0xffffffff
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: _::_::_::oct4::_::_
- 
- File "pcap_to_bpf/util.ml", lines 187-188, characters 4-87:
- 187 | ....match ipv6_piece with
- 188 |     | [x; y] -> Int.shift_left (int_of_string ("0x" ^ x)) 16 + int_of_string ("0x" ^ y)...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: x::y::_::_
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/block.cmx pcap_to_bpf/block.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/register.cmx pcap_to_bpf/optimizer/register.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/register.cmx pcap_to_bpf/optimizer/register.ml
- File "pcap_to_bpf/optimizer/register.ml", line 53, characters 4-5:
- 53 |   | _ -> failwith (Printf.sprintf "%s" (reg_to_str reg))
-          ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 56-57, characters 2-14:
- 56 | ..match reg with
- 57 |   | Reg v -> v
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (NilReg|Reg_exp (_, _, _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 109-125, characters 55-96:
- 109 | .......................................................function
- 110 |   | Lit n | Hex n | Hexj n -> Reg (Hex n)
- 111 |   | Off n -> Reg (Off n)
- 112 |   | Offset n -> Reg (Offset (get_val (regify a_reg x_reg n)))
- 113 |   | X -> x_reg
- ...
- 122 |     | Arith_and -> arith_and (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 123 |     | Arith_xor -> arith_xor (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 124 |     | Logical_shift_left -> logical_shift_left (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- 125 |     | Logical_shift_right -> logical_shift_right (regify a_reg x_reg v1) (regify a_reg x_reg v2)
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (True|False|NilVal|Mem _)
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 166-178, characters 8-68:
- 166 | ........match cond1, cond2 with
- 167 |         | NilCond, _ -> if_insert tl c
- 168 |         | _, NilCond -> if_insert tl c
- 169 |         | Eq x, Eq y -> if x = y then Triv_True else Triv_False
- 170 |         | Eq x, Neq y -> if x = y then Triv_False else Triv_True
- ...
- 175 |         | Gt x, Gt y -> if x >= y then Triv_True else if_insert tl c
- 176 |         | Gt x, Ge y -> if x > y then Triv_True else if_insert tl c
- 177 |         | Ge x, Gt y -> if x > y then Triv_True else if_insert tl c
- 178 |         | Ge x, Ge y -> if x >= y then Triv_True else if_insert tl c
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Eq _, (Lt _|Le _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 184-235, characters 2-41:
- 184 | ..match opcode with
- 185 |   | No_op _ | Nil_op  -> a_reg, x_reg
- 186 |   | St (Mem n) ->
- 187 |     begin
- 188 |       memory.(n) <- a_reg;
- ...
- 232 |   | Rsh X ->  (logical_shift_right a_reg x_reg), x_reg
- 233 |   | Tax ->  a_reg, a_reg
- 234 |   | Txa ->  x_reg, x_reg
- 235 |   | Ret False | Ret True ->  a_reg, x_reg
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     St (X|True|False|NilVal|Off _|Offset _|Hex _|Hexj _|Lit _|Exp (_, _, _))
- 
- File "pcap_to_bpf/optimizer/register.ml", lines 240-264, characters 4-7:
- 240 | ....begin
- 241 |       match jump_cond with
- 242 |       | Jeq (Lit n) | Jeq (Hex n) | Jeq (Hexj n) -> a_reg, x_reg, (Eq (Reg (Hex n)))
- 243 |       | Jneq (Lit n) | Jneq (Hex n) | Jneq (Hexj n) -> a_reg, x_reg, (Neq (Reg (Hex n)))
- 244 |       | Jne (Lit n) | Jne (Hex n) | Jne (Hexj n) -> a_reg, x_reg, (Neq (Reg (Hex n)))
- ...
- 261 |       | Ip_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 262 |       | Ip6_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 263 |       | Icmp6_Protochain_Bridge_cond (Lit n) -> a_reg, x_reg, NilCond
- 264 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Jeq (True|False|NilVal|Off _|Offset _|Mem _|Exp (_, _, _))
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/env.cmx pcap_to_bpf/env.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/protochain.cmx pcap_to_bpf/protocol/protochain.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/protochain.cmx pcap_to_bpf/protocol/protochain.ml
- File "pcap_to_bpf/protocol/protochain.ml", lines 93-113, characters 4-7:
-  93 | ....match headers with
-  94 |     | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _)->
-  95 |       Some {
-  96 |         code = [
-  97 |           Ldb (Off (sum_of_pred_headers + 9));
- ...
- 110 |         cond = Jeq (Hexj protochain_num);
- 111 |         jt = ret_true;
- 112 |         jf = ret_false
- 113 |       }
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- 
- File "pcap_to_bpf/protocol/protochain.ml", lines 126-130, characters 2-37:
- 126 | ..match headers with
- 127 |   | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _)->
- 128 |     gen_ip_protochain protochain_num
- 129 |   | Packet (_, _, L3 Ip6) | Segment (_, _, L3 Ip6, _)->
- 130 |     gen_ip6_protochain protochain_num
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/host.cmx pcap_to_bpf/protocol/host.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/net.cmx pcap_to_bpf/protocol/net.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/net.cmx pcap_to_bpf/protocol/net.ml
- File "pcap_to_bpf/protocol/net.ml", lines 96-102, characters 4-7:
-  96 | ....begin
-  97 |       match String.split_on_char '/' net with
-  98 |       | net' :: [mask] ->
-  99 |         let mask' = int_of_string mask in
- 100 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 101 |         ipv6_src_net net'' mask' headers
- 102 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: net'::mask::_::_
- 
- File "pcap_to_bpf/protocol/net.ml", lines 83-102, characters 2-7:
-  83 | ..match protocol with
-  84 |   | "ip" | "arp" | "rarp" ->
-  85 |     let _net = String.split_on_char '.' net in
-  86 |     Some {
-  87 |       code = [
- ...
-  99 |         let mask' = int_of_string mask in
- 100 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 101 |         ipv6_src_net net'' mask' headers
- 102 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/protocol/net.ml", lines 119-125, characters 4-7:
- 119 | ....begin
- 120 |       match String.split_on_char '/' net with
- 121 |       | net' :: [mask] ->
- 122 |         let mask' = int_of_string mask in
- 123 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 124 |         ipv6_dst_net net'' mask' headers
- 125 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: net'::mask::_::_
- 
- File "pcap_to_bpf/protocol/net.ml", lines 106-125, characters 2-7:
- 106 | ..match protocol with
- 107 |   | "ip" | "arp" | "rarp" ->
- 108 |     let _net = String.split_on_char '.' net in
- 109 |     Some {
- 110 |       code = [
- ...
- 122 |         let mask' = int_of_string mask in
- 123 |         let net'' = String.split_on_char ':' net' |> (List.filter (fun a -> a <> "")) |> ipv6_pad in
- 124 |         ipv6_dst_net net'' mask' headers
- 125 |     end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ether.cmx pcap_to_bpf/protocol/ether.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp6.cmx pcap_to_bpf/protocol/icmp6.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp6.cmx pcap_to_bpf/protocol/icmp6.ml
- File "pcap_to_bpf/protocol/icmp6.ml", lines 186-189, characters 2-43:
- 186 | ..match icmp6_info with
- 187 |   | "protochain" :: [protochain_num] ->
- 188 |     Env.generate_icmp6_protochain := true;
- 189 |     icmp6_protochain protochain_num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     "protochain"::protochain_num::_::_
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/infix_to_postfix.cmx pcap_to_bpf/infix_to_postfix.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/infix_to_postfix.cmx pcap_to_bpf/infix_to_postfix.ml
- File "pcap_to_bpf/infix_to_postfix.ml", lines 73-78, characters 6-60:
- 73 | ......match block with
- 74 |       | head :: rest ->
- 75 |         if is_square_open head || is_square_close head then
- 76 |           let square_cnt = count_square 0 0 head in
- 77 |           parse_square_bracket (head :: ret) rest (counter + (fst square_cnt) - (snd square_cnt))
- 78 |         else parse_square_bracket (head :: ret) rest counter
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip6.cmx pcap_to_bpf/protocol/ip6.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/port.cmx pcap_to_bpf/protocol/port.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/portrange.cmx pcap_to_bpf/protocol/portrange.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp.cmx pcap_to_bpf/protocol/icmp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/icmp.cmx pcap_to_bpf/protocol/icmp.ml
- File "pcap_to_bpf/protocol/icmp.ml", lines 95-96, characters 2-78:
- 95 | ..match icmp_info with
- 96 |   | "protochain" :: [protochain_num] -> icmp_protochain protochain_num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     "protochain"::protochain_num::_::_
- 
- File "pcap_to_bpf/protocol/icmp.ml", line 72, characters 6-19:
- 72 |   let source_quench = Some {code = []; cond = Jeq (Hexj 0x4); jt = ret_true; jf = ret_false} in
-            ^^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable source_quench.
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip.cmx pcap_to_bpf/protocol/ip.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/ip.cmx pcap_to_bpf/protocol/ip.ml
- File "pcap_to_bpf/protocol/ip.ml", lines 41-42, characters 2-157:
- 41 | ..match headers with
- 42 |   | Packet (x, _, L3 Ip) | Segment (x, _, L3 Ip, _) -> Ldxb (Exp ((Lit 4), (Exp ((Off (sum_of_header headers "ip")), (Hex 0xf), Arith_and)), Multiplication))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (x, _, L3 (Ip6|Arp|Rarp))
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/sctp.cmx pcap_to_bpf/protocol/sctp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/tcp.cmx pcap_to_bpf/protocol/tcp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/udp.cmx pcap_to_bpf/protocol/udp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/arp.cmx pcap_to_bpf/protocol/arp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/bound.cmx pcap_to_bpf/protocol/bound.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/eval.cmx pcap_to_bpf/eval.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/eval.cmx pcap_to_bpf/eval.ml
- File "pcap_to_bpf/eval.ml", lines 73-82, characters 13-21:
- 73 | .............function
- 74 |       | "+" -> Add X
- 75 |       | "-" -> Sub X
- 76 |       | "*" -> Mul X
- 77 |       | "/" -> Div X
- 78 |       | "%" -> Mod X
- 79 |       | "&" -> And X
- 80 |       | "|" -> Or X
- 81 |       | "<<" -> Lsh X
- 82 |       | ">>" -> Rsh X...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", lines 83-87, characters 4-63:
- 83 | ....match operator, num_op, proto_op with
- 84 |     | "+", _, _ ->  eval_proto_num operator proto_op num_op headers
- 85 |     | "*", _, _ ->  eval_proto_num operator proto_op num_op headers
- 86 |     | other, Num n, List x -> List (x @ [Tax; Ld (Lit n); op other])
- 87 |     | other, Num n, x ->  List ([x; Tax; Ld (Lit n); op other])
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     ("",
-     (Tax|Txa|Logical_And|Logical_Or|Nil_op|Ld _|Ldi _|Ldh _|Ldb _|Ldx _|
-     Ldxi _|Ldxb _|St _|Stx _|Add _|Sub _|Mul _|Div _|Mod _|Neg _|And _|
-     Or _|Xor _|Lsh _|Rsh _|No_op _|List _|Ret _), _)
- 
- File "pcap_to_bpf/eval.ml", lines 91-100, characters 13-21:
-  91 | .............function
-  92 |       | "+" -> Add X
-  93 |       | "-" -> Sub X
-  94 |       | "*" -> Mul X
-  95 |       | "/" -> Div X
-  96 |       | "%" -> Mod X
-  97 |       | "&" -> And X
-  98 |       | "|" -> Or X
-  99 |       | "<<" -> Lsh X
- 100 |       | ">>" -> Rsh X...
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", lines 143-148, characters 4-49:
- 143 | ....match comparison with
- 144 |     | "=" | "==" | "!=" -> comp_opcode_int comparison op num headers
- 145 |     | "<" -> comp_opcode_int ">" op num headers
- 146 |     | ">" -> comp_opcode_int "<" op num headers
- 147 |     | ">=" -> comp_opcode_int "<=" op num headers
- 148 |     | "<=" -> comp_opcode_int ">=" op num headers
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/eval.ml", line 188, characters 4-5:
- 188 |   | _ -> failwith "Eval.eval_pcaps"
-           ^
- Warning 11 [redundant-case]: this match case is unused.
- 
- File "pcap_to_bpf/eval.ml", lines 192-213, characters 2-42:
- 192 | ..match headers with
- 193 |   | Frame (l2, _) | Packet (l2, _, _)  | Segment (l2, _, _, _) ->
- 194 |     if l2 <> _protocol then failwith "Eval.l2_expr_size" else
- 195 |     if is_digit expr then
- 196 |       let inst =
- ...
- 210 |         | 4 -> Ld (Offset (Exp (X, (Lit (0)), Addition)))
- 211 |         | _ -> failwith "Eval.l2_expr_size ( 1, 2, 4 )"
- 212 |       in
- 213 |       List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Nil
- 
- File "pcap_to_bpf/eval.ml", lines 217-239, characters 2-44:
- 217 | ..match headers with
- 218 |   | Packet (_, _,  l3)  | Segment (_, _ ,l3, _) ->
- 219 |     if l3 <> _protocol then failwith "Eval.l3_expr_size" else
- 220 |       let pred_header_size = sum_of_header headers protocol in
- 221 |       if is_digit expr then
- ...
- 236 |           | 4 -> Ld (Offset (Exp (X, (Lit (pred_header_size)), Addition)))
- 237 |           | _ -> failwith "Eval.l3_expr_size"
- 238 |         in
- 239 |         List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Nil|Frame (_, _))
- 
- File "pcap_to_bpf/eval.ml", lines 243-283, characters 2-42:
- 243 | ..match headers with
- 244 |   | Segment (_, _, L3 Ip, l4) ->
- 245 |     if l4 <> _protocol then failwith "Eval.l4_expr_size" else
- 246 |       let pred_header_size = sum_of_header headers "ip" in
- 247 |       if is_digit expr then
- ...
- 280 |         | 4 -> Ld (Offset (Exp (X, (Lit (sum_of_header headers protocol)), Addition)))
- 281 |         | _ -> failwith "Eval.l4_expr_size"
- 282 |       in
- 283 |       List (expr_op @ (Tax :: inst :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Segment (_, _, L3 (Arp|Rarp), _)
- 
- File "pcap_to_bpf/eval.ml", lines 287-294, characters 2-80:
- 287 | ..match headers with
- 288 |   | Frame (l2, _) | Packet (l2, _, _) | Segment (l2, _, _, _) ->
- 289 |     if _protocol <> l2 then failwith "Eval.l2_offset" else
- 290 |     if is_digit idx then
- 291 |       Ldb (Off (int_of_string idx))
- 292 |     else
- 293 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 294 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, (Lit (0)), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Nil
- 
- File "pcap_to_bpf/eval.ml", lines 298-305, characters 2-109:
- 298 | ..match headers with
- 299 |   | Packet (l2, _, l3) | Segment (l2, _, l3, _) ->
- 300 |     if _protocol <> l3 then failwith "Eval.l3_offset" else
- 301 |     if is_digit idx then
- 302 |       Ldb (Off (sum_of_header headers protocol + int_of_string idx))
- 303 |     else
- 304 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 305 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, (Lit (sum_of_header headers protocol)), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (Nil|Frame (_, _))
- 
- File "pcap_to_bpf/eval.ml", lines 309-324, characters 2-107:
- 309 | ..match headers with
- 310 |   | Segment (l2, _, L3 Ip, l4) ->
- 311 |     let pred_header_size = sum_of_header headers "ip" in
- 312 |     if _protocol <> l4 then failwith "Eval.l4_offset" else
- 313 |     if is_digit idx then
- ...
- 321 |       Ldb (Off (sum_of_header headers protocol + int_of_string idx))
- 322 |     else
- 323 |       let idx_op = (Option.get (eval_pcaps [] (pcap_infix_to_postfix idx) headers)).code in
- 324 |       List (idx_op @ (Tax :: Ldb (Offset (Exp (X, Lit (sum_of_header headers protocol), Addition))) :: []))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Segment (_, _, L3 (Arp|Rarp), _)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/mpls.cmx pcap_to_bpf/protocol/mpls.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/mpls.cmx pcap_to_bpf/protocol/mpls.ml
- File "pcap_to_bpf/protocol/mpls.ml", lines 36-47, characters 2-34:
- 36 | ..match mpls_info, l2_5_header with
- 37 |   | [], L2_5 Mpls :: [] -> is_mpls headers
- 38 |   | [], L2_5 Mpls :: L2_5 Vlan :: l2_5 -> is_mpls headers
- 39 |   | [], L2_5 Mpls :: L2_5 Mpls :: l2_5 -> is_bottom headers
- 40 |   | [mpls_val], L2_5 Mpls :: [] | [mpls_val], L2_5 Mpls :: L2_5 Vlan :: _ ->
- ...
- 44 |   | [mpls_val], L2_5 Mpls :: L2_5 Mpls :: l2_5 ->
- 45 |     let _mpls_val = mpls_val_shift (int_of_string mpls_val) in
- 46 |     let sf = Some {code = [Ld (Off (get_protocol_size (get_l2 headers) + get_l2_5_size headers - 4)); And (Hexj 0xfffff000)]; cond = Jeq (Hexj (_mpls_val)); jt = ret_true; jf = ret_false}in
- 47 |     conjoin (is_bottom headers) sf
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     ([], L2_5 Mpls::(L2 _|L3 _|L4 _)::_)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/rarp.cmx pcap_to_bpf/protocol/rarp.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/vlan.cmx pcap_to_bpf/protocol/vlan.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/protocol -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -o pcap_to_bpf/protocol/vlan.cmx pcap_to_bpf/protocol/vlan.ml
- File "pcap_to_bpf/protocol/vlan.ml", lines 39-189, characters 2-79:
-  39 | ..match vlan_info, headers with
-  40 |   (*    [snipped from <linux/filter.h>]
-  41 |     Git hash: 6f52b16c5b29b89d92c0e7236f4655dc8491ad70
-  42 |     https://github.com/torvalds/linux/blob/master/include/uapi/linux/filter.h
-  43 | 
- ...
- 186 |           jf = ret_false;
- 187 |         }
- 188 |     in
- 189 |     conjoin (disjoin vlan_id_8100 (disjoin vlan_id_88a8 vlan_id_9100)) vlan_val
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ("SKF_AD"::_::_, _)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/bpf_optimizer.cmx pcap_to_bpf/optimizer/bpf_optimizer.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf/optimizer -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/protocol -o pcap_to_bpf/optimizer/bpf_optimizer.cmx pcap_to_bpf/optimizer/bpf_optimizer.ml
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", lines 53-59, characters 2-65:
- 53 | ..match blocks with
- 54 |   | b :: bs ->
- 55 |     match b with
- 56 |     | {key = _; opcodes = [Ret True]; cond = _; jt = -1; jf = -1}
- 57 |     | {key = _; opcodes = [Ret False]; cond = _; jt = -1; jf = -1} -> ret
- 58 |     | {key = key; opcodes = opcodes; cond = cond; jt = jt; jf = jf} ->
- 59 |       get_pkt_acpt_line_helper (ret + List.length opcodes + 1) bs
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: []
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 187, characters 14-19:
- 187 |           let new_a = {key = a_key; opcodes = a_opcodes; cond = a_cond; jt = a_jt; jf = a_jf} in
-                     ^^^^^
- Warning 26 [unused-var]: unused variable new_a.
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 486, characters 16-22:
- 486 |             let jf_blk = Hashtbl.find blocks_tbl b.jf in
-                       ^^^^^^
- Warning 26 [unused-var]: unused variable jf_blk.
- 
- File "pcap_to_bpf/optimizer/bpf_optimizer.ml", line 501, characters 16-28:
- 501 |             let cur_blk_eval = Hashtbl.find blocks_eval_tbl b.key in
-                       ^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable cur_blk_eval.
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_tree.cmx pcap_to_bpf/pcap_to_tree.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_tree.cmx pcap_to_bpf/pcap_to_tree.ml
- File "pcap_to_bpf/pcap_to_tree.ml", lines 53-58, characters 4-35:
- 53 | ....match protocol with
- 54 |     | "icmp" -> icmp_to_sock_filter
- 55 |     | "tcp" -> tcp_to_sock_filter
- 56 |     | "udp" -> udp_to_sock_filter
- 57 |     | "icmp6" -> icmp6_to_sock_filter
- 58 |     | "sctp" -> sctp_to_sock_filter
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 61-66, characters 4-19:
- 61 | ....match protocol with
- 62 |     | "icmp" -> 1
- 63 |     | "tcp" -> 6
- 64 |     | "udp" -> 17
- 65 |     | "icmp6" -> 58
- 66 |     | "sctp" -> 132
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 78-80, characters 6-88:
- 78 | ......match headers with
- 79 |       | Packet (_, _, L3 Ip) | Segment (_, _, L3 Ip, _) -> sum_of_header headers "ip"
- 80 |       | Packet (_, _, L3 Ip6) | Segment (_, _, L3 Ip6, _) -> sum_of_header headers "ip6"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Packet (_, _, L3 (Arp|Rarp))
- 
- File "pcap_to_bpf/pcap_to_tree.ml", lines 69-98, characters 2-37:
- 69 | ..match !Env.protochain_list, protocol with
- 70 |   | [], _
- 71 |   | 1 :: _, "icmp"
- 72 |   | 6 :: _, "tcp"
- 73 |   | 17 :: _, "udp"
- ...
- 95 |         failwith "not_supported protochain_bridge"
- 96 |     in
- 97 |     Env.protochain_list := protocol_num :: !Env.protochain_list;
- 98 |     conjoin protochain_bridge main_sf
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (1::_, "")
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/tree_to_bpf.cmx pcap_to_bpf/tree_to_bpf.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o html.cmx html.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I pcap_to_bpf -I english -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pcap_to_bpf/pcap_to_bpf.cmx pcap_to_bpf/pcap_to_bpf.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o aux.cmx aux.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/bitvector.cmx syntax/bitvector.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/bitvector.cmx syntax/bitvector.ml
- File "syntax/bitvector.ml", lines 83-189, characters 2-9:
-  83 | ..match bv_e with
-  84 |   | Hole (_, s) -> s
-  85 |   | Const (Some w, n) ->
-  86 |       assert (exponentiate 2 w > n);
-  87 |       let nibble_width =
- ...
- 186 |       "((_ zero_extend " ^
- 187 |       string_of_int w ^ ") " ^
- 188 |       string_of_bv_exp bv_e' ^
- 189 |       ")"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Const (None, _)
- 
- File "syntax/bitvector.ml", line 87, characters 10-22:
- 87 |       let nibble_width =
-                ^^^^^^^^^^^^
- Warning 26 [unused-var]: unused variable nibble_width.
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/string_features.cmx syntax/string_features.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_syntax_aux.cmx syntax/pcap_syntax_aux.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o layering.cmx layering.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o names.cmx names.ml
- + ocamlfind ocamldep -package angstrom -package str -modules syntax/pcap_parser.ml > syntax/pcap_parser.ml.depends
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_parser.cmx syntax/pcap_parser.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_lexer.cmx syntax/pcap_lexer.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_string.cmx english/english_to_string.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_string.cmx english/english_to_string.ml
- File "english/english_to_string.ml", lines 73-111, characters 2-46:
-  73 | ..match c with
-  74 |   | OfType t -> (if logically_positive then "of type" else "not of type") ^ " " ^ string_of_term t
-  75 |   | ThatIs (t1, t2) ->
-  76 |       string_of_term t1 ^ " "
-  77 |       ^ (if logically_positive then "that is" else "that is not")
- ...
- 108 |   | ExaminingRelation_clause (Phrase comp, it_var, left, right) ->
- 109 |       let it_str = string_of_term it_var in
- 110 |       "examining" ^ " " ^ it_str ^ ":" ^ " " ^ string_of_arith_val left ^ " "
- 111 |       ^ comp ^ " " ^ string_of_arith_val right
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Relation_clause
-       ((UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-        OrdinalReference (_, _, _, _)|TermList _),
-       _, _)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o parsing_support.cmx parsing_support.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o contract.cmx contract.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o simplifire.cmx simplifire.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english_spec.cmx english/pcap_to_english_spec.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o bitvector_sizing.cmx bitvector_sizing.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o bitvector_sizing.cmx bitvector_sizing.ml
- File "bitvector_sizing.ml", lines 34-36, characters 6-37:
- 34 | ......let (bv_e2', Some bv_e2_w) = width_of_bv_exp bv_e2 in
- 35 |       assert (w = bv_e1_w + bv_e2_w);
- 36 |       Concat (Some w, bv_e1', bv_e2')
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (bv_e2', None)
- 
- File "bitvector_sizing.ml", lines 33-36, characters 6-37:
- 33 | ......let (bv_e1', Some bv_e1_w) = width_of_bv_exp bv_e1 in
- 34 |       let (bv_e2', Some bv_e2_w) = width_of_bv_exp bv_e2 in
- 35 |       assert (w = bv_e1_w + bv_e2_w);
- 36 |       Concat (Some w, bv_e1', bv_e2')
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: (bv_e1', None)
- 
- File "bitvector_sizing.ml", lines 170-185, characters 2-137:
- 170 | ..match bv_e with
- 171 |   | Hole (w, _)
- 172 |   | Const (w, _) -> (bv_e, w)
- 173 |   | BNot (w_opt, bv_e') -> width_of_mono (w_opt, bv_e') (fun (x1, x2) -> BNot (x1, x2))
- 174 |   | BNegate (w_opt, bv_e') -> width_of_mono (w_opt, bv_e') (fun (x1, x2) -> BNegate (x1, x2))
- ...
- 182 |   | BMod (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> BMod (w_opt, bv_e1, bv_e2))
- 183 |   | BMinus (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> BMinus (w_opt, bv_e1, bv_e2))
- 184 |   | ShLeft (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> ShLeft (w_opt, bv_e1, bv_e2))
- 185 |   | LShRight (w_opt, bv_e1, bv_e2) -> width_of_binary (w_opt, bv_e1, bv_e2) (fun (w_opt, bv_e1, bv_e2) -> LShRight (w_opt, bv_e1, bv_e2))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (Concat (_, _, _)|Extract (_, _, _)|ZeroExtend (_, _, _))
- 
- File "bitvector_sizing.ml", line 224, characters 12-19:
- 224 |         let bv_e1'', bv_e2'' =
-                   ^^^^^^^
- Warning 26 [unused-var]: unused variable bv_e1''.
- 
- File "bitvector_sizing.ml", line 224, characters 21-28:
- 224 |         let bv_e1'', bv_e2'' =
-                            ^^^^^^^
- Warning 26 [unused-var]: unused variable bv_e2''.
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o prim_translate.cmx prim_translate.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o cli.cmx cli.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap.cmx english/english_to_pcap.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/english_to_pcap.cmx english/english_to_pcap.ml
- File "english/english_to_pcap.ml", lines 28-40, characters 2-9:
- 28 | ..match ph with
- 29 |   | Phrase ph_s ->
- 30 |       begin
- 31 |         match
- 32 |           ( proto_keyword_of_engl_string ph_s,
- ...
- 37 |         | _, Some (DirField d), _ -> Ok (None, Some d, None)
- 38 |         | _, _, Some (TypField t) -> Ok (None, None, Some t)
- 39 |         | _ -> Error ("invalid field (proto/dir/typ) value: '" ^ ph_s ^ "'")
- 40 |       end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 49-56, characters 10-13:
- 49 | ..........begin
- 50 |             match t with
- 51 |             | Phrase ph_s -> (
- 52 |                 match (dir_keyword_of_engl_string ph_s, typ_keyword_of_engl_string ph_s) with
- 53 |                 | Some (DirField d), _ -> Ok (Some p, Some d, None)
- 54 |                 | _, Some (TypField t) -> Ok (Some p, None, Some t)
- 55 |                 | _ -> Error ("invalid field (dir/typ) value: '" ^ ph_s ^ "'"))
- 56 |           end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 58-64, characters 10-13:
- 58 | ..........begin
- 59 |             match t with
- 60 |             | Phrase ph_s -> (
- 61 |                 match typ_keyword_of_engl_string ph_s with
- 62 |                 | Some (TypField t) -> Ok (p_opt, Some d, Some t)
- 63 |                 | _ -> Error ("invalid field (typ) value: '" ^ ph_s ^ "'"))
- 64 |           end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 105-112, characters 6-26:
- 105 | ......match vals with
- 106 |       | Ok (v :: []) -> Ok (Primitive (f, v))
- 107 |       | Ok (v1 :: vs) ->
- 108 |           (* a disjunction of the form "<proto> <value1> || <value2> || <value3> || ..." *)
- 109 |           let f0 = (None, None, None) in
- 110 |           Ok
- 111 |             (Or (Primitive (f, v1) :: List.map (fun v -> Primitive (f0, v)) vs))
- 112 |       | Error e -> Error e.
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Ok []
- 
- File "english/english_to_pcap.ml", lines 122-125, characters 12-42:
- 122 | ............match ordinal_name_s with
- 123 |             | "byte" -> ""
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: ""
- 
- File "english/english_to_pcap.ml", lines 117-127, characters 76-63:
- 117 | ............................................................................(
- 118 |       match field_of_phrase_term (Phrase collection_name) with
- 119 |       | Ok (Some p, _, _) ->
- 120 |           let header_name_s = Pcap_syntax_aux.string_of_proto p in
- 121 |           let no_bytes =
- ...
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- 126 |           in
- 127 |           " " ^ header_name_s ^ "[" ^ number ^ no_bytes ^ "] ")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Ok (None, _, _)
- 
- File "english/english_to_pcap.ml", lines 116-127, characters 2-63:
- 116 | ..match ord_ref with
- 117 |   | OrdinalReference (number, ordinal_name_s, collection_name, "header") -> (
- 118 |       match field_of_phrase_term (Phrase collection_name) with
- 119 |       | Ok (Some p, _, _) ->
- 120 |           let header_name_s = Pcap_syntax_aux.string_of_proto p in
- ...
- 124 |             | "2 bytes" -> " : 2"
- 125 |             | "4 bytes" | "word" -> " : 4"
- 126 |           in
- 127 |           " " ^ header_name_s ^ "[" ^ number ^ no_bytes ^ "] ")
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     OrdinalReference (number, ordinal_name_s, collection_name, "")
- 
- File "english/english_to_pcap.ml", lines 134-135, characters 10-68:
- 134 | ..........match l with
- 135 |           | OrdinalReference _ -> string_of_ordinal_reference_term l
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (Phrase _|UnidentifiedString _|With_term (_, _, _)|
-     OfSize_term (_, _, _, _)|TermList _)
- 
- File "english/english_to_pcap.ml", lines 157-159, characters 12-15:
- 157 | ............begin
- 158 |               match fld with Ok f -> Ok (Primitive (f, Nothing))
- 159 |             end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Error _
- 
- File "english/english_to_pcap.ml", lines 167-169, characters 12-15:
- 167 | ............begin
- 168 |               match fld with Ok f -> Ok (Primitive (f, Nothing))
- 169 |             end
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched: Error _
- 
- File "english/english_to_pcap.ml", lines 151-188, characters 2-80:
- 151 | ..match c with
- 152 |   | OfType r -> 
- 153 |       begin
- 154 |         match r with
- 155 |         | Phrase _ ->
- ...
- 185 |       let relation_s = left_arith_s ^ " " ^ comp_s ^ " " ^ right_arith_s in
- 186 |       (* FIXME - can't check for syntax errors here *)
- 187 |       Ok (Parsing_support.parse_string relation_s)
- 188 |   | Unit (UnidentifiedString x) -> Ok (Primitive ((None, None, None), String x))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     Relation_clause
-       ((UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-        OrdinalReference (_, _, _, _)|TermList _),
-       _, _)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o expand.cmx expand.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english.cmx english/pcap_to_english.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o english/pcap_to_english.cmx english/pcap_to_english.ml
- File "english/pcap_to_english.ml", lines 109-116, characters 16-47:
- 109 | ................(
- 110 |           match value with
- 111 |           | Phrase val_s ->
- 112 |               Ok
- 113 |                 (Relation_clause
- 114 |                    ( Phrase "is less than or equal to",
- 115 |                      Arithmetic ("len", []),
- 116 |                      Arithmetic (val_s, []) )))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- 
- File "english/pcap_to_english.ml", lines 117-124, characters 19-47:
- 117 | ...................(
- 118 |           match value with
- 119 |           | Phrase val_s ->
- 120 |               Ok
- 121 |                 (Relation_clause
- 122 |                    ( Phrase "is greater than or equal to",
- 123 |                      Arithmetic ("len", []),
- 124 |                      Arithmetic (val_s, []) )))
- Warning 8 [partial-match]: this pattern-matching is not exhaustive.
-   Here is an example of a case that is not matched:
-     (UnidentifiedString _|With_term (_, _, _)|OfSize_term (_, _, _, _)|
-     OrdinalReference (_, _, _, _)|TermList _)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I syntax -I english -I pcap_to_bpf -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o syntax/pcap_wellformed.cmx syntax/pcap_wellformed.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pretty_printing.cmx pretty_printing.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o pseudonymise.cmx pseudonymise.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o reorder.cmx reorder.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o reorder.cmx reorder.ml
- File "reorder.ml", line 31, characters 4-19:
- 31 |     int_of_string s;
-          ^^^^^^^^^^^^^^^
- Warning 10 [non-unit-statement]: this expression should have type unit.
- 
- File "reorder.ml", line 33, characters 14-31:
- 33 |   with Failure("int_of_string") -> false
-                    ^^^^^^^^^^^^^^^^^
- Warning 52 [fragile-literal-pattern]: Code should not depend on the actual
-   values of this constructor's arguments.
-   They are only for information and may change in future versions.
-   (see manual section 13.5.3)
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o translate.cmx translate.ml
- + ocamlfind ocamlopt -c -g -thread -package angstrom -package str -I english -I pcap_to_bpf -I syntax -I pcap_to_bpf/optimizer -I pcap_to_bpf/protocol -o caper.cmx caper.ml
- + ocamlfind ocamlopt -g -linkpkg -thread -package angstrom -package str -I english -I syntax -I pcap_to_bpf -I pcap_to_bpf/protocol -I pcap_to_bpf/optimizer config.cmx english/english_syntax.cmx english/english_parsing.cmx syntax/pcap_syntax.cmx english/english_to_pcap_spec.cmx html.cmx pcap_to_bpf/headers.cmx pcap_to_bpf/inst.cmx pcap_to_bpf/util.cmx pcap_to_bpf/block.cmx pcap_to_bpf/env.cmx pcap_to_bpf/infix_to_postfix.cmx pcap_to_bpf/protocol/ether.cmx pcap_to_bpf/protocol/host.cmx pcap_to_bpf/protocol/icmp.cmx pcap_to_bpf/protocol/protochain.cmx pcap_to_bpf/protocol/icmp6.cmx pcap_to_bpf/protocol/net.cmx pcap_to_bpf/protocol/ip.cmx pcap_to_bpf/protocol/ip6.cmx pcap_to_bpf/protocol/port.cmx pcap_to_bpf/protocol/portrange.cmx pcap_to_bpf/protocol/sctp.cmx pcap_to_bpf/protocol/tcp.cmx pcap_to_bpf/protocol/udp.cmx pcap_to_bpf/eval.cmx pcap_to_bpf/optimizer/register.cmx pcap_to_bpf/optimizer/bpf_optimizer.cmx pcap_to_bpf/protocol/arp.cmx pcap_to_bpf/protocol/bound.cmx pcap_to_bpf/protocol/mpls.cmx pcap_to_bpf/protocol/rarp.cmx pcap_to_bpf/protocol/vlan.cmx pcap_to_bpf/pcap_to_tree.cmx pcap_to_bpf/tree_to_bpf.cmx pcap_to_bpf/pcap_to_bpf.cmx aux.cmx syntax/bitvector.cmx bitvector_sizing.cmx cli.cmx layering.cmx syntax/string_features.cmx syntax/pcap_syntax_aux.cmx names.cmx contract.cmx english/english_to_string.cmx syntax/pcap_parser.cmx syntax/pcap_lexer.cmx parsing_support.cmx english/english_to_pcap.cmx english/pcap_to_english_spec.cmx english/pcap_to_english.cmx simplifire.cmx expand.cmx pretty_printing.cmx prim_translate.cmx pseudonymise.cmx reorder.cmx syntax/pcap_wellformed.cmx translate.cmx caper.cmx -o caper.native
-> compiled  caper.0.9
-> removed   caper.0.9
-> installed caper.0.9
Done.
# To update the current shell environment, run: eval $(opam env)
2026-03-25 19:51.23 ---> saved as "45e7656876f4e8aad7327e6f69a7497273011abc29ad574be8526bcb2f860b65"
Job succeeded
2026-03-25 19:51.46: Job succeeded