start to implementig clone to create namespaces
This commit is contained in:
		
							parent
							
								
									750426ad1d
								
							
						
					
					
						commit
						dec755a2a5
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| ./target/ | ||||
							
								
								
									
										285
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										285
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -17,6 +17,64 @@ version = "1.0.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "aho-corasick" | ||||
| version = "1.1.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" | ||||
| dependencies = [ | ||||
|  "memchr", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anstream" | ||||
| version = "0.6.15" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" | ||||
| dependencies = [ | ||||
|  "anstyle", | ||||
|  "anstyle-parse", | ||||
|  "anstyle-query", | ||||
|  "anstyle-wincon", | ||||
|  "colorchoice", | ||||
|  "is_terminal_polyfill", | ||||
|  "utf8parse", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anstyle" | ||||
| version = "1.0.8" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anstyle-parse" | ||||
| version = "0.2.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" | ||||
| dependencies = [ | ||||
|  "utf8parse", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anstyle-query" | ||||
| version = "1.1.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" | ||||
| dependencies = [ | ||||
|  "windows-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anstyle-wincon" | ||||
| version = "3.0.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" | ||||
| dependencies = [ | ||||
|  "anstyle", | ||||
|  "windows-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "anyhow" | ||||
| version = "1.0.86" | ||||
| @ -46,9 +104,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| version = "2.5.0" | ||||
| version = "2.6.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" | ||||
| checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "byteorder" | ||||
| @ -77,6 +135,35 @@ version = "1.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "colorchoice" | ||||
| version = "1.0.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "env_filter" | ||||
| version = "0.1.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" | ||||
| dependencies = [ | ||||
|  "log", | ||||
|  "regex", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "env_logger" | ||||
| version = "0.11.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" | ||||
| dependencies = [ | ||||
|  "anstream", | ||||
|  "anstyle", | ||||
|  "env_filter", | ||||
|  "humantime", | ||||
|  "log", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "futures" | ||||
| version = "0.3.30" | ||||
| @ -179,10 +266,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.153" | ||||
| name = "humantime" | ||||
| version = "2.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" | ||||
| checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "is_terminal_polyfill" | ||||
| version = "1.70.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.158" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lock_api" | ||||
| version = "0.4.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" | ||||
| dependencies = [ | ||||
|  "autocfg", | ||||
|  "scopeguard", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "log" | ||||
| @ -192,9 +301,9 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "memchr" | ||||
| version = "2.7.2" | ||||
| version = "2.7.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" | ||||
| checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miniz_oxide" | ||||
| @ -221,8 +330,12 @@ dependencies = [ | ||||
| name = "netjailers" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "env_logger", | ||||
|  "futures", | ||||
|  "log", | ||||
|  "nix", | ||||
|  "rtnetlink", | ||||
|  "tokio", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| @ -310,6 +423,29 @@ dependencies = [ | ||||
|  "memchr", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "parking_lot" | ||||
| version = "0.12.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" | ||||
| dependencies = [ | ||||
|  "lock_api", | ||||
|  "parking_lot_core", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "parking_lot_core" | ||||
| version = "0.9.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "redox_syscall", | ||||
|  "smallvec", | ||||
|  "windows-targets", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "paste" | ||||
| version = "1.0.15" | ||||
| @ -330,22 +466,60 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "proc-macro2" | ||||
| version = "1.0.81" | ||||
| version = "1.0.86" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" | ||||
| checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" | ||||
| dependencies = [ | ||||
|  "unicode-ident", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "quote" | ||||
| version = "1.0.36" | ||||
| version = "1.0.37" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" | ||||
| checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "redox_syscall" | ||||
| version = "0.5.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex" | ||||
| version = "1.10.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" | ||||
| dependencies = [ | ||||
|  "aho-corasick", | ||||
|  "memchr", | ||||
|  "regex-automata", | ||||
|  "regex-syntax", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex-automata" | ||||
| version = "0.4.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" | ||||
| dependencies = [ | ||||
|  "aho-corasick", | ||||
|  "memchr", | ||||
|  "regex-syntax", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex-syntax" | ||||
| version = "0.8.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rtnetlink" | ||||
| version = "0.14.1" | ||||
| @ -370,12 +544,27 @@ version = "0.1.24" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "scopeguard" | ||||
| version = "1.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "shlex" | ||||
| version = "1.3.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "signal-hook-registry" | ||||
| version = "1.4.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" | ||||
| dependencies = [ | ||||
|  "libc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "slab" | ||||
| version = "0.4.9" | ||||
| @ -385,6 +574,12 @@ dependencies = [ | ||||
|  "autocfg", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "smallvec" | ||||
| version = "1.13.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "socket2" | ||||
| version = "0.5.7" | ||||
| @ -397,9 +592,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "syn" | ||||
| version = "2.0.60" | ||||
| version = "2.0.76" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" | ||||
| checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -408,18 +603,18 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror" | ||||
| version = "1.0.59" | ||||
| version = "1.0.63" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" | ||||
| checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" | ||||
| dependencies = [ | ||||
|  "thiserror-impl", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror-impl" | ||||
| version = "1.0.59" | ||||
| version = "1.0.63" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" | ||||
| checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -436,17 +631,37 @@ dependencies = [ | ||||
|  "bytes", | ||||
|  "libc", | ||||
|  "mio", | ||||
|  "parking_lot", | ||||
|  "pin-project-lite", | ||||
|  "signal-hook-registry", | ||||
|  "socket2", | ||||
|  "tokio-macros", | ||||
|  "windows-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tokio-macros" | ||||
| version = "2.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "unicode-ident" | ||||
| version = "1.0.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "utf8parse" | ||||
| version = "0.2.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "wasi" | ||||
| version = "0.11.0+wasi-snapshot-preview1" | ||||
| @ -464,9 +679,9 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-targets" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" | ||||
| checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" | ||||
| dependencies = [ | ||||
|  "windows_aarch64_gnullvm", | ||||
|  "windows_aarch64_msvc", | ||||
| @ -480,48 +695,48 @@ dependencies = [ | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_gnullvm" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" | ||||
| checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_msvc" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" | ||||
| checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnu" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" | ||||
| checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnullvm" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" | ||||
| checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_msvc" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" | ||||
| checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnu" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" | ||||
| checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnullvm" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" | ||||
| checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_msvc" | ||||
| version = "0.52.5" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" | ||||
| checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" | ||||
|  | ||||
| @ -4,5 +4,10 @@ version = "0.1.0" | ||||
| edition = "2021" | ||||
| 
 | ||||
| [dependencies] | ||||
| nix = '*' | ||||
| rtnetlink = '*' | ||||
| nix = {version = '*', features= ["fs", "mount", "sched"] } | ||||
| rtnetlink = {version = '*', features = ["tokio_socket"] } | ||||
| futures = '*' | ||||
| log = '*' | ||||
| env_logger = '*' | ||||
| tokio = {version = '*', features = ["full"] } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										58
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -1,47 +1,15 @@ | ||||
| use std::fs::create_dir; | ||||
| use std::io::{Result, ErrorKind}; | ||||
| use std::fs::File; | ||||
| use nix::mount::{ | ||||
|     mount, | ||||
|     MsFlags | ||||
| }; | ||||
| mod namespace; | ||||
| use std::io::Result; | ||||
| use rtnetlink::NetworkNamespace; | ||||
| use futures::executor::block_on; | ||||
| 
 | ||||
| const PATH_MAX:u32 = 4096; | ||||
| const NET_NS_DIR:&str = "/var/run/netns"; | ||||
| const PROC_NS_DIR:&str = "/proc/self/ns/net"; | ||||
| 
 | ||||
| fn main() -> Result<()> { | ||||
|     create_ns_dir()?; | ||||
|     let nsdir = format!("{}/{}",NET_NS_DIR,"fake-net"); | ||||
|     File::create(nsdir.clone())?; | ||||
|     bind_ns_file(nsdir)?; | ||||
|     println!("end"); | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| fn create_ns_dir() -> Result<()> { | ||||
|     match create_dir(NET_NS_DIR) { | ||||
|         Err(e) if e.kind() != ErrorKind::AlreadyExists => { | ||||
|             println!("entra 2"); | ||||
|             Err(e) | ||||
|         }, | ||||
|         _ => { | ||||
|             println!("entra 1"); | ||||
|             Ok(()) | ||||
|         }, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn bind_ns_file(ns_file: String) -> Result<()> { | ||||
|     match create_mount(ns_file) { | ||||
|         Ok(_mount) => { | ||||
|             println!("mount succes"); | ||||
|             Ok(()) | ||||
|         }, | ||||
|         Err(e) => Err(e), | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn create_mount(ns_file: String) -> Result<()> { | ||||
|     Ok(mount::<str, str, str, str>(Some(PROC_NS_DIR), ns_file.as_str(), None, MsFlags::MS_BIND, None)?) | ||||
| fn main() { | ||||
|     env_logger::Builder::from_default_env() | ||||
|         .format_timestamp_secs() | ||||
|         .filter(None, log::LevelFilter::Debug) | ||||
|         .init(); | ||||
|     //namespace::create_ns::create_ns();
 | ||||
|     let ns_name = "test-newns".to_string(); | ||||
|     block_on(NetworkNamespace::add(ns_name.clone())); | ||||
|     namespace::bind_interface::run_in_namespace(&ns_name); | ||||
| } | ||||
|  | ||||
							
								
								
									
										172
									
								
								src/namespace/bind_interface.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								src/namespace/bind_interface.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,172 @@ | ||||
| use nix::sched::{CloneFlags, clone, unshare, setns}; | ||||
| use nix::sys::signal::Signal; | ||||
| use crate::namespace::consts::{ | ||||
|     NET_NS_DIR, | ||||
|     STACK_SIZE | ||||
| }; | ||||
| 
 | ||||
| use futures::TryStreamExt; | ||||
| use nix::fcntl::{open, OFlag}; | ||||
| use nix::mount::{mount, MsFlags}; | ||||
| use nix::unistd::{fork, ForkResult, Pid}; | ||||
| use nix::sys::wait::{waitpid, WaitStatus}; | ||||
| use nix::sys::stat::Mode; | ||||
| use nix::sys::statvfs::{statvfs, FsFlags}; | ||||
| use rtnetlink::{new_connection, Error, Handle, NetworkNamespace}; | ||||
| 
 | ||||
| use std::env; | ||||
| use std::fs::{File, OpenOptions}; | ||||
| use std::path::{Path, PathBuf}; | ||||
| use std::process::exit; | ||||
| use std::os::unix::io::RawFd; | ||||
| use std::os::fd::FromRawFd; | ||||
| 
 | ||||
| pub fn run_in_namespace(ns_name: &String) -> Result<(), ()> { | ||||
|     // Configure networking in the child namespace:
 | ||||
|     // Fork a process that is set to the newly created namespace
 | ||||
|     // Here set the veth ip addr, routing tables etc.
 | ||||
|     // Unfortunately the NetworkNamespace interface of rtnetlink does
 | ||||
|     // not offer these functionalities
 | ||||
|     let mut tmp_stack: [u8; STACK_SIZE] = [0; STACK_SIZE]; | ||||
|     let mut flags = CloneFlags::empty(); | ||||
|     flags.insert(CloneFlags::CLONE_VM); | ||||
|     flags.insert(CloneFlags::CLONE_VFORK); | ||||
| 
 | ||||
|     unsafe { | ||||
|         match clone( | ||||
|             Box::new(|| run_child(&ns_name.clone())), | ||||
|             &mut tmp_stack, | ||||
|             flags, | ||||
|             Some(Signal::SIGCHLD as i32)) { | ||||
|                 Ok(pid) => Ok(()), | ||||
|                 Err(e) => { | ||||
|                     return Err(()); | ||||
|                 } | ||||
|             } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| fn run_child(ns_name: &String) -> isize { | ||||
|     let res = split_namespace(ns_name); | ||||
| 
 | ||||
|     match res { | ||||
|         Err(_) => { | ||||
|             log::error!("Child process crashed"); | ||||
|             return -1; | ||||
|         } | ||||
|         Ok(()) => { | ||||
|             log::debug!("Child exited normally"); | ||||
|             return 0; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn split_namespace(ns_name: &String) -> Result<(), ()> { | ||||
|     // First create the network namespace
 | ||||
|     // NetworkNamespace::add(ns_name.to_string()).await.map_err(|e| {
 | ||||
|     //     log::error!("Can not create namespace {}", e);
 | ||||
|     // }).unwrap();
 | ||||
| 
 | ||||
|     // Open NS path
 | ||||
|     let ns_path = format!("{}/{}", NET_NS_DIR, ns_name); | ||||
|     log::debug!("ns_path:{}", ns_path); | ||||
|     let mut open_flags = OFlag::empty(); | ||||
|     open_flags.insert(OFlag::O_RDONLY); | ||||
|     open_flags.insert(OFlag::O_CLOEXEC); | ||||
| 
 | ||||
|     let fd = match open(Path::new(&ns_path), open_flags, Mode::empty()) { | ||||
|         Ok(raw_fd) => unsafe { | ||||
|             File::from_raw_fd(raw_fd) | ||||
|         } | ||||
|         Err(e) => { | ||||
|             log::error!("Can not open network namespace: {}", e); | ||||
|             return Err(()); | ||||
|         } | ||||
|     }; | ||||
|     // Switch to network namespace with CLONE_NEWNET
 | ||||
|     if let Err(e) = setns(fd, CloneFlags::CLONE_NEWNET) { | ||||
|         log::error!("Can not set namespace to target {}: {}", ns_name, e); | ||||
|         return Err(()); | ||||
|     } | ||||
|     // unshare with CLONE_NEWNS
 | ||||
|     if let Err(e) = unshare(CloneFlags::CLONE_NEWNS) { | ||||
|         log::error!("Can not unshare: {}", e); | ||||
|         return Err(()); | ||||
|     } | ||||
|     // mount blind the fs
 | ||||
|     // let's avoid that any mount propagates to the parent process
 | ||||
|     // mount_directory(None, &PathBuf::from("/"), vec![MsFlags::MS_REC, MsFlags::MS_PRIVATE])?;
 | ||||
|     let mut mount_flags = MsFlags::empty(); | ||||
|     mount_flags.insert(MsFlags::MS_REC); | ||||
|     mount_flags.insert(MsFlags::MS_PRIVATE); | ||||
|     if let Err(e) = mount::<PathBuf, PathBuf, str, PathBuf>(None, &PathBuf::from("/"), None, mount_flags, None) { | ||||
|         log::error!("Can not remount root directory"); | ||||
|         () | ||||
|     } | ||||
| 
 | ||||
|     // Now unmount /sys
 | ||||
|     let sys_path = PathBuf::from("/sys"); | ||||
|     mount_flags = MsFlags::empty(); | ||||
|     // Needed to respect the trait for NixPath
 | ||||
|     let ns_name_path = PathBuf::from(ns_name); | ||||
| 
 | ||||
|     // TODO do not exit for EINVAL error
 | ||||
|     // unmount_path(&sys_path)?;
 | ||||
|     // consider the case that a sysfs is not present
 | ||||
|     let stat_sys = statvfs(&sys_path) | ||||
|         .map_err(|e| { | ||||
|             log::error!("Can not stat sys: {}", e); | ||||
|     }).unwrap(); | ||||
|     if stat_sys.flags().contains(FsFlags::ST_RDONLY) { | ||||
|         mount_flags.insert(MsFlags::MS_RDONLY); | ||||
|     } | ||||
| 
 | ||||
|     // and remount a version of /sys that describes the network namespace
 | ||||
|     if let Err(e) = mount::<PathBuf, PathBuf, str, PathBuf>(Some(&ns_name_path), &sys_path, Some("sysfs"), mount_flags, None) { | ||||
|         log::error!("Can not remount /sys to namespace: {}", e); | ||||
|         () | ||||
|     } | ||||
| 
 | ||||
|     set_lo_up().unwrap(); | ||||
| 
 | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| pub fn set_lo_up() -> Result<(), Error> { | ||||
|     tokio::runtime::Runtime::new().unwrap().handle().block_on( async { | ||||
|         let (connection, handle, _) = new_connection().unwrap(); | ||||
|         tokio::spawn(connection); | ||||
|         log::debug!("ARE WE STOPPING YET???"); | ||||
|         let mut links = handle.link().get().match_name("lo".to_string()).execute(); | ||||
|         if let Some(link) = links.try_next().await.unwrap() { | ||||
|         let index = link.header.index; | ||||
|         log::debug!("index:{}", index); | ||||
|         handle | ||||
|             .link() | ||||
|             .set(index) | ||||
|             .up() | ||||
|             .execute() | ||||
|             .await.unwrap() | ||||
|     } else { | ||||
|         println!("no link link lo found"); | ||||
|     } | ||||
|     }); | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| pub fn get_inferfaces() -> Result<(), Error> { | ||||
|         tokio::runtime::Runtime::new().unwrap().handle().block_on( async { | ||||
|         let (connection, handle, _) = new_connection().unwrap(); | ||||
|         tokio::spawn(connection); | ||||
|         log::debug!("ARE WE STOPPING YET???"); | ||||
|         let mut links = handle.link().get().match_name("lo".to_string()).execute(); | ||||
|         if let Some(link) = links.try_next().await.unwrap() { | ||||
|         let index = link.header.index; | ||||
|         log::debug!("index:{}", index); | ||||
|     } else { | ||||
|         println!("no link link lo found"); | ||||
|     } | ||||
|     }); | ||||
|     Ok(()) | ||||
| } | ||||
							
								
								
									
										3
									
								
								src/namespace/consts.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/namespace/consts.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| pub const NET_NS_DIR:&str = "/var/run/netns"; | ||||
| pub const PROC_NS_DIR:&str = "/proc/self/ns/net"; | ||||
| pub const STACK_SIZE: usize = 1024 * 1024; | ||||
							
								
								
									
										43
									
								
								src/namespace/create_ns.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/namespace/create_ns.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| use std::fs::create_dir; | ||||
| use std::io::{Result, ErrorKind}; | ||||
| use std::fs::File; | ||||
| use crate::namespace::consts::{ | ||||
|     NET_NS_DIR, | ||||
|     PROC_NS_DIR | ||||
| }; | ||||
| use nix::mount::{ | ||||
|     mount, | ||||
|     MsFlags | ||||
| }; | ||||
| 
 | ||||
| pub fn create_ns() -> Result<()> { | ||||
|     create_ns_dir()?; | ||||
|     let nsdir = format!("{}/{}",NET_NS_DIR,"fake-net"); | ||||
|     File::create(nsdir.clone())?; | ||||
|     bind_ns_file(nsdir)?; | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| fn create_ns_dir() -> Result<()> { | ||||
|     match create_dir(NET_NS_DIR) { | ||||
|         Err(e) if e.kind() != ErrorKind::AlreadyExists => { | ||||
|             Err(e) | ||||
|         }, | ||||
|         _ => { | ||||
|             Ok(()) | ||||
|         }, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn bind_ns_file(ns_file: String) -> Result<()> { | ||||
|     match create_mount(ns_file) { | ||||
|         Ok(_mount) => { | ||||
|             Ok(()) | ||||
|         }, | ||||
|         Err(e) => Err(e), | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn create_mount(ns_file: String) -> Result<()> { | ||||
|     Ok(mount::<str, str, str, str>(Some(PROC_NS_DIR), ns_file.as_str(), None, MsFlags::MS_BIND, None)?) | ||||
| } | ||||
							
								
								
									
										3
									
								
								src/namespace/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/namespace/mod.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| pub mod create_ns; | ||||
| pub mod bind_interface; | ||||
| mod consts; | ||||
| @ -1 +1 @@ | ||||
| {"rustc_fingerprint":6810405396222242824,"outputs":{"14371922958718593042":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/usr/lib/rust/1.75.0\noff\npacked\nunpacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.75.0-nightly (82e1608df 2023-12-21) (gentoo)\nbinary: rustc\ncommit-hash: 82e1608dfa6e0b5569232559e3d385fea5a93112\ncommit-date: 2023-12-21\nhost: x86_64-unknown-linux-gnu\nrelease: 1.75.0-nightly\nLLVM version: 17.0.6\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/usr/lib/rust/1.75.0\noff\npacked\nunpacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}} | ||||
| {"rustc_fingerprint":16843398912199516732,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.77.1-nightly (7cf61ebde 2024-03-27) (gentoo)\nbinary: rustc\ncommit-hash: 7cf61ebde7b22796c69757901dd346d0fe70bd97\ncommit-date: 2024-03-27\nhost: x86_64-unknown-linux-gnu\nrelease: 1.77.1-nightly\nLLVM version: 17.0.6\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/usr/lib/rust/1.77.1\noff\npacked\nunpacked\n___\ndebug_assertions\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| 0b4a466cbef669a6 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"perf-literal\", \"std\"]","declared_features":"","target":12812136000324506373,"profile":10243973527296709326,"path":2971844613553093254,"deps":[[15818844694086178958,"memchr",false,12906208283825589802]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/aho-corasick-380a7a96c0a1ba62/dep-lib-aho_corasick"}}],"rustflags":[],"metadata":13904389431191498124,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| 42afad93b8694766 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"perf-literal\", \"std\"]","declared_features":"","target":12812136000324506373,"profile":10243973527296709326,"path":2971844613553093254,"deps":[[554324495028472449,"memchr",false,15179918458959061077]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/aho-corasick-8555408cfc02a94e/dep-lib-aho_corasick"}}],"rustflags":[],"metadata":13904389431191498124,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| 69784b3f83445b2f | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"auto\", \"wincon\"]","declared_features":"","target":16157420304466204941,"profile":7959395715337908301,"path":17008840370713652988,"deps":[[4140584164330467587,"anstyle_parse",false,7397021863188073708],[4841825386763765772,"anstyle",false,1883430076433240692],[8720183142424604966,"utf8parse",false,3747497813813928829],[9119385831240683871,"is_terminal_polyfill",false,7682525050476323852],[11373957721457960839,"colorchoice",false,14823648757850095299],[17875114200413610454,"anstyle_query",false,8328454441242376391]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstream-03005e2dccd36c5a/dep-lib-anstream"}}],"rustflags":[],"metadata":7500874485387469444,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| 741217f9ac49231a | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"std\"]","declared_features":"","target":13663407036240438623,"profile":7959395715337908301,"path":12465602841095431332,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-3c24e018428cb281/dep-lib-anstyle"}}],"rustflags":[],"metadata":14064844656010464607,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| ec8c1f873180a766 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"utf8\"]","declared_features":"","target":14060034144933290917,"profile":7959395715337908301,"path":8361312151712045008,"deps":[[8720183142424604966,"utf8parse",false,3747497813813928829]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-parse-3162f58a267a82d1/dep-lib-anstyle_parse"}}],"rustflags":[],"metadata":9799137552285937175,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| c7b84632309d9473 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":4180334433859559650,"profile":7959395715337908301,"path":6542451989483504666,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anstyle-query-ba85be343c043f10/dep-lib-anstyle_query"}}],"rustflags":[],"metadata":10674566383365303417,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -0,0 +1 @@ | ||||
| 2239456ab88b58cd | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"std\"]","declared_features":"","target":2297296889237502566,"profile":13232757476167777671,"path":59827710957018798,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-02fe9e44969ee97d/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":17154292783084528516,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
							
								
								
									
										
											BIN
										
									
								
								target/debug/.fingerprint/anyhow-307a696a835b9a50/dep-lib-anyhow
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								target/debug/.fingerprint/anyhow-307a696a835b9a50/dep-lib-anyhow
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| f4c9624cb5b5b4af | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"std\"]","declared_features":"","target":18338613112069040866,"profile":10243973527296709326,"path":2008250343690022255,"deps":[[16045357212464686133,"build_script_build",false,12135854289225791291]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/anyhow-307a696a835b9a50/dep-lib-anyhow"}}],"rustflags":[],"metadata":17154292783084528516,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -0,0 +1 @@ | ||||
| 3b3734732d376ba8 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[16045357212464686133,"build_script_build",false,14796730199898929442]],"local":[{"RerunIfChanged":{"output":"debug/build/anyhow-7345f3df037033ed/output","paths":["build/probe.rs"]}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| a9c9a4730edf7788 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":14886237245231788030,"profile":13232757476167777671,"path":10139091292005370064,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/autocfg-12e34dc06f010928/dep-lib-autocfg"}}],"rustflags":[],"metadata":13102859075309379048,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| bdae259f81fa1a5e | ||||
| 7c36b2cc43d33ede | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[\"runtime\"]","target":2297296889237502566,"profile":13232757476167777671,"path":16441280068773014788,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bindgen-3e9776b5caf0602b/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":12047033523087941064,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[\"runtime\"]","declared_features":"","target":2297296889237502566,"profile":13232757476167777671,"path":16441280068773014788,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bindgen-3e9776b5caf0602b/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":12047033523087941064,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| a8845d19fb2e0a2c | ||||
| c3d72b7d08e89bed | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"","target":0,"profile":0,"path":0,"deps":[[16657950103275413129,"build_script_build",false,6781007623587475133],[3645781541664732627,"build_script_build",false,13381621582300735131]],"local":[{"RerunIfEnvChanged":{"var":"LLVM_CONFIG_PATH","val":null}},{"RerunIfEnvChanged":{"var":"LIBCLANG_PATH","val":null}},{"RerunIfEnvChanged":{"var":"LIBCLANG_STATIC_PATH","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS_x86_64-unknown-linux-gnu","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu","val":null}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[16657950103275413129,"build_script_build",false,16014469613126563452],[3645781541664732627,"build_script_build",false,15744894913902412371]],"local":[{"RerunIfEnvChanged":{"var":"LLVM_CONFIG_PATH","val":null}},{"RerunIfEnvChanged":{"var":"LIBCLANG_PATH","val":null}},{"RerunIfEnvChanged":{"var":"LIBCLANG_STATIC_PATH","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS_x86_64-unknown-linux-gnu","val":null}},{"RerunIfEnvChanged":{"var":"BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu","val":null}}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| a0c36e22caab4da7 | ||||
| 6d67f0c9a6ef1e4c | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[\"runtime\"]","target":16970473089856473606,"profile":13232757476167777671,"path":10135709493537907987,"deps":[[781203651122893512,"itertools",false,1196255805855801766],[1098045598771442027,"rustc_hash",false,15873768857435819073],[3315648657471645960,"syn",false,5069628571888748611],[3645781541664732627,"clang_sys",false,3586882353191584289],[6685014296130524576,"lazy_static",false,14456438003198516100],[7667881417093566568,"regex",false,10131567605926034710],[7803147409971559194,"bitflags",false,13774089662621865957],[9919038314455684856,"cexpr",false,9758609279652146378],[12879454158807538225,"proc_macro2",false,6269066671878042494],[14268468010440576439,"quote",false,934534267851553249],[15215384180442390425,"shlex",false,1155142216850249724],[16657950103275413129,"build_script_build",false,3173400543433163944],[17982777832778715688,"lazycell",false,3696227459918614681]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bindgen-975d40f2171e6a4b/dep-lib-bindgen"}}],"rustflags":[],"metadata":12047033523087941064,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[\"runtime\"]","declared_features":"","target":16970473089856473606,"profile":13232757476167777671,"path":10135709493537907987,"deps":[[781203651122893512,"itertools",false,17963160126496189210],[1098045598771442027,"rustc_hash",false,6410205461376918822],[3315648657471645960,"syn",false,1418781551455076159],[3645781541664732627,"clang_sys",false,9962078604898871477],[6685014296130524576,"lazy_static",false,8390294726635418236],[7667881417093566568,"regex",false,1120269004853361790],[7803147409971559194,"bitflags",false,5054310738842885462],[9919038314455684856,"cexpr",false,6759785643936588298],[12879454158807538225,"proc_macro2",false,15550522315831839980],[14268468010440576439,"quote",false,12812348526856516459],[15215384180442390425,"shlex",false,3392064947751036622],[16657950103275413129,"build_script_build",false,17121533531536480195],[17982777832778715688,"lazycell",false,9186778222242795488]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bindgen-975d40f2171e6a4b/dep-lib-bindgen"}}],"rustflags":[],"metadata":12047033523087941064,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| c4aafae66c8a0ba8 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":17263469766201294439,"profile":10243973527296709326,"path":3904161143572546884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-04194a51d71f18e8/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| e5d7f4e4916527bf | ||||
| 561d2c8dd6842446 | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[]","target":17263469766201294439,"profile":13232757476167777671,"path":12965942823663347115,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-7c79278797171fe4/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":17263469766201294439,"profile":13232757476167777671,"path":12965942823663347115,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-7c79278797171fe4/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| c2de4d22c149740b | ||||
| 49672502dfaebf0b | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[]","target":17263469766201294439,"profile":10243973527296709326,"path":12965942823663347115,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-e2ec6af07d04812b/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":17263469766201294439,"profile":10243973527296709326,"path":12965942823663347115,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bitflags-e2ec6af07d04812b/dep-lib-bitflags"}}],"rustflags":[],"metadata":14564035643000669268,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| e9f8b1fd0883aee9 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"std\"]","declared_features":"","target":18335588937564793828,"profile":10243973527296709326,"path":3402790763499476678,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/byteorder-f457975fa4e321fd/dep-lib-byteorder"}}],"rustflags":[],"metadata":5398730104718078656,"config":2202906307356721367,"compile_kind":0} | ||||
							
								
								
									
										
											BIN
										
									
								
								target/debug/.fingerprint/bytes-88a901ae17f9b8c6/dep-lib-bytes
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								target/debug/.fingerprint/bytes-88a901ae17f9b8c6/dep-lib-bytes
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| eb76815c0a4f4f27 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"default\", \"std\"]","declared_features":"","target":3193619734832674211,"profile":10243973527296709326,"path":11929486172863314308,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bytes-88a901ae17f9b8c6/dep-lib-bytes"}}],"rustflags":[],"metadata":11501112221997671841,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| ca2c7fbf6f8b6d87 | ||||
| 0a22a0703a95cf5d | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[]","target":6156026458003474340,"profile":13232757476167777671,"path":16781895747561641039,"deps":[[6954241390595330609,"nom",false,18266198037604573168]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cexpr-9030ae258cba2f75/dep-lib-cexpr"}}],"rustflags":[],"metadata":10749519017815238760,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":6156026458003474340,"profile":13232757476167777671,"path":16781895747561641039,"deps":[[6954241390595330609,"nom",false,10580008855826337156]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cexpr-9030ae258cba2f75/dep-lib-cexpr"}}],"rustflags":[],"metadata":10749519017815238760,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| d9d668884144ab04 | ||||
| e5d4637022e1cfbe | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[]","target":10623512480563079566,"profile":13232757476167777671,"path":6989630276718306723,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-567b18db5e64b918/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":10623512480563079566,"profile":13232757476167777671,"path":6989630276718306723,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-567b18db5e64b918/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":2202906307356721367,"compile_kind":0} | ||||
							
								
								
									
										
											BIN
										
									
								
								target/debug/.fingerprint/cfg-if-e245088e9dfd77f4/dep-lib-cfg-if
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								target/debug/.fingerprint/cfg-if-e245088e9dfd77f4/dep-lib-cfg-if
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| e73b76dfca30c24e | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":10623512480563079566,"profile":10243973527296709326,"path":6989630276718306723,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-e245088e9dfd77f4/dep-lib-cfg-if"}}],"rustflags":[],"metadata":8462187951337715540,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| 26f4026160e95ea8 | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":14135410566186380836,"profile":9659778293828062018,"path":13359542114083016871,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg_aliases-0c13ead8cb1e0916/dep-lib-cfg_aliases"}}],"rustflags":[],"metadata":16709548127506949239,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| 9b66bc23ee11b5b9 | ||||
| 53020211811a81da | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"","target":0,"profile":0,"path":0,"deps":[[3645781541664732627,"build_script_build",false,7944119245256798479]],"local":[{"Precalculated":"1.7.0"}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[3645781541664732627,"build_script_build",false,8364822712810638366]],"local":[{"Precalculated":"1.7.0"}],"rustflags":[],"metadata":0,"config":0,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| 0f31e0225d2e3f6e | ||||
| 1e8c3246f0d11574 | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[\"clang_3_5\", \"clang_3_6\", \"clang_3_7\", \"clang_3_8\", \"clang_3_9\", \"clang_4_0\", \"clang_5_0\", \"clang_6_0\", \"libloading\", \"runtime\"]","target":8188216131759486267,"profile":13232757476167777671,"path":3264583103793129916,"deps":[[11695236103535428844,"glob",false,12405090853772603720]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clang-sys-78aed8adf867dace/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":16670924540240920614,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[\"clang_3_5\", \"clang_3_6\", \"clang_3_7\", \"clang_3_8\", \"clang_3_9\", \"clang_4_0\", \"clang_5_0\", \"clang_6_0\", \"libloading\", \"runtime\"]","declared_features":"","target":8188216131759486267,"profile":13232757476167777671,"path":3264583103793129916,"deps":[[11695236103535428844,"glob",false,10400476037138367243]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clang-sys-78aed8adf867dace/dep-build-script-build-script-build"}}],"rustflags":[],"metadata":16670924540240920614,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| 21021a017f2ac731 | ||||
| b52884b5b569408a | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[\"clang_3_5\", \"clang_3_6\", \"clang_3_7\", \"clang_3_8\", \"clang_3_9\", \"clang_4_0\", \"clang_5_0\", \"clang_6_0\", \"libloading\", \"runtime\"]","target":3695163521108343623,"profile":13232757476167777671,"path":7073536676544276869,"deps":[[3645781541664732627,"build_script_build",false,13381621582300735131],[4419231006748921122,"libloading",false,11846970560759831048],[11695236103535428844,"glob",false,12405090853772603720],[11943424025318460506,"libc",false,11606914615387550226]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clang-sys-8c39b8e66d6251b3/dep-lib-clang-sys"}}],"rustflags":[],"metadata":16670924540240920614,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[\"clang_3_5\", \"clang_3_6\", \"clang_3_7\", \"clang_3_8\", \"clang_3_9\", \"clang_4_0\", \"clang_5_0\", \"clang_6_0\", \"libloading\", \"runtime\"]","declared_features":"","target":3695163521108343623,"profile":13232757476167777671,"path":7073536676544276869,"deps":[[3645781541664732627,"build_script_build",false,15744894913902412371],[4419231006748921122,"libloading",false,13055013296483097481],[11695236103535428844,"glob",false,10400476037138367243],[11943424025318460506,"libc",false,14265260396336396368]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/clang-sys-8c39b8e66d6251b3/dep-lib-clang-sys"}}],"rustflags":[],"metadata":16670924540240920614,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| c3bed096012eb8cd | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":6039773940249072176,"profile":7959395715337908301,"path":9220678370376129898,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/colorchoice-c95a30e1795634ff/dep-lib-colorchoice"}}],"rustflags":[],"metadata":16033661185762923568,"config":2202906307356721367,"compile_kind":0} | ||||
| @ -1 +1 @@ | ||||
| 16937f196a70c830 | ||||
| dd8a1be3fb0bf394 | ||||
| @ -1 +1 @@ | ||||
| {"rustc":13421329839480389204,"features":"[]","target":10519268927367075084,"profile":13232757476167777671,"path":1720556288695834191,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/either-7f1aafcb85617e4f/dep-lib-either"}}],"rustflags":[],"metadata":14516623572814205243,"config":2202906307356721367,"compile_kind":0} | ||||
| {"rustc":7148235511965463537,"features":"[]","declared_features":"","target":10519268927367075084,"profile":13232757476167777671,"path":1720556288695834191,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/either-7f1aafcb85617e4f/dep-lib-either"}}],"rustflags":[],"metadata":14516623572814205243,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| a69da2a18263279c | ||||
| @ -0,0 +1 @@ | ||||
| {"rustc":7148235511965463537,"features":"[\"regex\"]","declared_features":"","target":7948988592201928665,"profile":4773716172779844209,"path":2256710772158208240,"deps":[[11752053697376755573,"regex",false,10104769297377264673],[17157248321732533341,"log",false,10355495188920205597]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/env_filter-4300dff6c64b849f/dep-lib-env_filter"}}],"rustflags":[],"metadata":10457561132037420740,"config":2202906307356721367,"compile_kind":0} | ||||
										
											Binary file not shown.
										
									
								
							| @ -0,0 +1 @@ | ||||
| This file has an mtime of when this was started. | ||||
| @ -0,0 +1 @@ | ||||
| eacbc670c34adb7f | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user