data_faking/data/it/
mac_address.rs1use crate::utils::seeder;
2use wasm_bindgen::prelude::*;
3
4#[wasm_bindgen]
5pub fn mac_address(prefix: Option<String>) -> String {
6 let mut mac_builder: Vec<i32> = vec![];
7 if let Some(arg) = prefix {
8 let tokens = arg.split(":");
9 for t in tokens {
10 let mut i: i32 = i32::from_str_radix(t, 16).unwrap();
11
12 if i > MAC_RANGE_MAX {
13 i = MAC_RANGE_MAX;
14 }
15 mac_builder.push(i);
16 }
17 }
18
19 for _ in 0..(MAC_SEGMENT_NUM-mac_builder.len()) {
20 mac_builder.push(seeder::gen_range(MAC_RANGE_MIN..MAC_RANGE_MAX));
21 }
22
23 let mut mac_tokens: Vec<String> = vec![];
24 for i in mac_builder {
25 mac_tokens.push(format!("{:x}", i));
26 }
27 let s = mac_tokens.join(":");
28 s
29}
30
31static MAC_RANGE_MIN: i32 = 0;
32static MAC_RANGE_MAX: i32 = 256;
33static MAC_SEGMENT_NUM: usize = 6;