| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Package deviceid generates device IDs. |
| |
| // DeviceID generates the device ID from a MAC address. |
| // |
| // This is used for mDNS, and the device ID for the first |
| // ethernet device in the system is the default host name |
| // of a Fuchsia device. |
| pub fn device_id(mac: &Vec<u8>) -> String { |
| // Keep this algorithm in sync with zircon's device_id.c |
| format!( |
| "{}-{}-{}-{}", |
| dict((mac[0] as u16) | (((mac[4] as u16) << 8) & 0xF00)), |
| dict((mac[1] as u16) | (((mac[5] as u16) << 8) & 0xF00)), |
| dict((mac[2] as u16) | (((mac[4] as u16) << 4) & 0xF00)), |
| dict((mac[3] as u16) | (((mac[5] as u16) << 4) & 0xF00)) |
| ) |
| } |
| |
| fn dict(x: u16) -> &'static str { |
| return DICTIONARY[x as usize % 1296]; |
| } |
| |
| // Dictionary of words to use to build device names. |
| // Keep in sync with zircon/system/core/netsvc/eff_short_wordlist_1.h |
| pub const DICTIONARY: [&str; 1296] = [ |
| "acid", "acorn", "acre", "acts", "afar", "affix", "aged", "agent", "agile", "aging", "agony", |
| "ahead", "aide", "aids", "aim", "ajar", "alarm", "alias", "alibi", "alien", "alike", "alive", |
| "aloe", "aloft", "aloha", "alone", "amend", "amino", "ample", "amuse", "angel", "anger", |
| "angle", "ankle", "apple", "april", "apron", "aqua", "area", "arena", "argue", "arise", |
| "armed", "armor", "army", "aroma", "array", "arson", "art", "ashen", "ashes", "atlas", "atom", |
| "attic", "audio", "avert", "avoid", "awake", "award", "awoke", "axis", "bacon", "badge", |
| "bagel", "baggy", "baked", "baker", "balmy", "banjo", "barge", "barn", "bash", "basil", "bask", |
| "batch", "bath", "baton", "bats", "blade", "blank", "blast", "blaze", "bleak", "blend", |
| "bless", "blimp", "blink", "bloat", "blob", "blog", "blot", "blunt", "blurt", "blush", "boast", |
| "boat", "body", "boil", "bok", "bolt", "boned", "boney", "bonus", "bony", "book", "booth", |
| "boots", "boss", "botch", "both", "boxer", "breed", "bribe", "brick", "bride", "brim", "bring", |
| "brink", "brisk", "broad", "broil", "broke", "brook", "broom", "brush", "buck", "bud", "buggy", |
| "bulge", "bulk", "bully", "bunch", "bunny", "bunt", "bush", "bust", "busy", "buzz", "cable", |
| "cache", "cadet", "cage", "cake", "calm", "cameo", "canal", "candy", "cane", "canon", "cape", |
| "card", "cargo", "carol", "carry", "carve", "case", "cash", "cause", "cedar", "chain", "chair", |
| "chant", "chaos", "charm", "chase", "cheek", "cheer", "chef", "chess", "chest", "chew", |
| "chief", "chili", "chill", "chip", "chomp", "chop", "chow", "chuck", "chump", "chunk", "churn", |
| "chute", "cider", "cinch", "city", "civic", "civil", "clad", "claim", "clamp", "clap", "clash", |
| "clasp", "class", "claw", "clay", "clean", "clear", "cleat", "cleft", "clerk", "click", |
| "cling", "clink", "clip", "cloak", "clock", "clone", "cloth", "cloud", "clump", "coach", |
| "coast", "coat", "cod", "coil", "coke", "cola", "cold", "colt", "coma", "come", "comic", |
| "comma", "cone", "cope", "copy", "coral", "cork", "cost", "cot", "couch", "cough", "cover", |
| "cozy", "craft", "cramp", "crane", "crank", "crate", "crave", "crawl", "creek", "creme", |
| "crepe", "crept", "crib", "cried", "crisp", "crook", "crop", "cross", "crowd", "crown", |
| "crumb", "crush", "crust", "cub", "cult", "cupid", "cure", "curl", "curry", "curse", "curve", |
| "curvy", "cushy", "cut", "cycle", "dab", "dad", "daily", "dairy", "daisy", "dance", "dandy", |
| "darn", "dart", "dash", "data", "date", "dawn", "deaf", "deal", "dean", "debit", "debt", |
| "debug", "decaf", "decal", "decay", "deck", "decor", "decoy", "deed", "delay", "denim", |
| "dense", "dent", "depth", "derby", "desk", "dial", "diary", "dice", "dig", "dill", "dime", |
| "dimly", "diner", "dingy", "disco", "dish", "disk", "ditch", "ditzy", "dizzy", "dock", "dodge", |
| "doing", "doll", "dome", "donor", "donut", "dose", "dot", "dove", "down", "dowry", "doze", |
| "drab", "drama", "drank", "draw", "dress", "dried", "drift", "drill", "drive", "drone", |
| "droop", "drove", "drown", "drum", "dry", "duck", "duct", "dude", "dug", "duke", "duo", "dusk", |
| "dust", "duty", "dwarf", "dwell", "eagle", "early", "earth", "easel", "east", "eaten", "eats", |
| "ebay", "ebony", "ebook", "echo", "edge", "eel", "eject", "elbow", "elder", "elf", "elk", |
| "elm", "elope", "elude", "elves", "email", "emit", "empty", "emu", "enter", "entry", "envoy", |
| "equal", "erase", "error", "erupt", "essay", "etch", "evade", "even", "evict", "evil", "evoke", |
| "exact", "exit", "fable", "faced", "fact", "fade", "fall", "false", "fancy", "fang", "fax", |
| "feast", "feed", "femur", "fence", "fend", "ferry", "feta", "fetch", "fever", "fiber", "fifth", |
| "fifty", "film", "filth", "final", "finch", "fit", "five", "flag", "flaky", "flame", "flap", |
| "flask", "fled", "flick", "fling", "flint", "flip", "flirt", "float", "flock", "flop", "floss", |
| "flyer", "foam", "foe", "fog", "foil", "folic", "folk", "food", "fool", "found", "fox", |
| "foyer", "frail", "frame", "fray", "fresh", "fried", "frill", "frisk", "from", "front", |
| "frost", "froth", "frown", "froze", "fruit", "gag", "gains", "gala", "game", "gap", "gas", |
| "gave", "gear", "gecko", "geek", "gem", "genre", "gift", "gig", "gills", "given", "giver", |
| "glad", "glass", "glide", "gloss", "glove", "glow", "glue", "goal", "going", "golf", "gong", |
| "good", "gooey", "goofy", "gore", "gown", "grab", "grain", "grant", "grape", "graph", "grasp", |
| "grass", "grave", "gravy", "gray", "green", "greet", "grew", "grid", "grief", "grill", "grip", |
| "grit", "groom", "grope", "growl", "grub", "grunt", "guide", "gulf", "gulp", "gummy", "guru", |
| "gush", "gut", "guy", "habit", "half", "halo", "halt", "happy", "harm", "hash", "hasty", |
| "hatch", "hate", "haven", "hazel", "hazy", "heap", "heat", "heave", "hedge", "hefty", "help", |
| "herbs", "hers", "hub", "hug", "hula", "hull", "human", "humid", "hump", "hung", "hunk", |
| "hunt", "hurry", "hurt", "hush", "hut", "ice", "icing", "icon", "icy", "igloo", "image", "ion", |
| "iron", "islam", "issue", "item", "ivory", "ivy", "jab", "jam", "jaws", "jazz", "jeep", |
| "jelly", "jet", "jiffy", "job", "jog", "jolly", "jolt", "jot", "joy", "judge", "juice", |
| "juicy", "july", "jumbo", "jump", "junky", "juror", "jury", "keep", "keg", "kept", "kick", |
| "kilt", "king", "kite", "kitty", "kiwi", "knee", "knelt", "koala", "kung", "ladle", "lady", |
| "lair", "lake", "lance", "land", "lapel", "large", "lash", "lasso", "last", "latch", "late", |
| "lazy", "left", "legal", "lemon", "lend", "lens", "lent", "level", "lever", "lid", "life", |
| "lift", "lilac", "lily", "limb", "limes", "line", "lint", "lion", "lip", "list", "lived", |
| "liver", "lunar", "lunch", "lung", "lurch", "lure", "lurk", "lying", "lyric", "mace", "maker", |
| "malt", "mama", "mango", "manor", "many", "map", "march", "mardi", "marry", "mash", "match", |
| "mate", "math", "moan", "mocha", "moist", "mold", "mom", "moody", "mop", "morse", "most", |
| "motor", "motto", "mount", "mouse", "mousy", "mouth", "move", "movie", "mower", "mud", "mug", |
| "mulch", "mule", "mull", "mumbo", "mummy", "mural", "muse", "music", "musky", "mute", "nacho", |
| "nag", "nail", "name", "nanny", "nap", "navy", "near", "neat", "neon", "nerd", "nest", "net", |
| "next", "niece", "ninth", "nutty", "oak", "oasis", "oat", "ocean", "oil", "old", "olive", |
| "omen", "onion", "only", "ooze", "opal", "open", "opera", "opt", "otter", "ouch", "ounce", |
| "outer", "oval", "oven", "owl", "ozone", "pace", "pagan", "pager", "palm", "panda", "panic", |
| "pants", "panty", "paper", "park", "party", "pasta", "patch", "path", "patio", "payer", |
| "pecan", "penny", "pep", "perch", "perky", "perm", "pest", "petal", "petri", "petty", "photo", |
| "plank", "plant", "plaza", "plead", "plot", "plow", "pluck", "plug", "plus", "poach", "pod", |
| "poem", "poet", "pogo", "point", "poise", "poker", "polar", "polio", "polka", "polo", "pond", |
| "pony", "poppy", "pork", "poser", "pouch", "pound", "pout", "power", "prank", "press", "print", |
| "prior", "prism", "prize", "probe", "prong", "proof", "props", "prude", "prune", "pry", "pug", |
| "pull", "pulp", "pulse", "puma", "punch", "punk", "pupil", "puppy", "purr", "purse", "push", |
| "putt", "quack", "quake", "query", "quiet", "quill", "quilt", "quit", "quota", "quote", |
| "rabid", "race", "rack", "radar", "radio", "raft", "rage", "raid", "rail", "rake", "rally", |
| "ramp", "ranch", "range", "rank", "rant", "rash", "raven", "reach", "react", "ream", "rebel", |
| "recap", "relax", "relay", "relic", "remix", "repay", "repel", "reply", "rerun", "reset", |
| "rhyme", "rice", "rich", "ride", "rigid", "rigor", "rinse", "riot", "ripen", "rise", "risk", |
| "ritzy", "rival", "river", "roast", "robe", "robin", "rock", "rogue", "roman", "romp", "rope", |
| "rover", "royal", "ruby", "rug", "ruin", "rule", "runny", "rush", "rust", "rut", "sadly", |
| "sage", "said", "saint", "salad", "salon", "salsa", "salt", "same", "sandy", "santa", "satin", |
| "sauna", "saved", "savor", "sax", "say", "scale", "scam", "scan", "scare", "scarf", "scary", |
| "scoff", "scold", "scoop", "scoot", "scope", "score", "scorn", "scout", "scowl", "scrap", |
| "scrub", "scuba", "scuff", "sect", "sedan", "self", "send", "sepia", "serve", "set", "seven", |
| "shack", "shade", "shady", "shaft", "shaky", "sham", "shape", "share", "sharp", "shed", |
| "sheep", "sheet", "shelf", "shell", "shine", "shiny", "ship", "shirt", "shock", "shop", |
| "shore", "shout", "shove", "shown", "showy", "shred", "shrug", "shun", "shush", "shut", "shy", |
| "sift", "silk", "silly", "silo", "sip", "siren", "sixth", "size", "skate", "skew", "skid", |
| "skier", "skies", "skip", "skirt", "skit", "sky", "slab", "slack", "slain", "slam", "slang", |
| "slash", "slate", "slaw", "sled", "sleek", "sleep", "sleet", "slept", "slice", "slick", |
| "slimy", "sling", "slip", "slit", "slob", "slot", "slug", "slum", "slurp", "slush", "small", |
| "smash", "smell", "smile", "smirk", "smog", "snack", "snap", "snare", "snarl", "sneak", |
| "sneer", "sniff", "snore", "snort", "snout", "snowy", "snub", "snuff", "speak", "speed", |
| "spend", "spent", "spew", "spied", "spill", "spiny", "spoil", "spoke", "spoof", "spool", |
| "spoon", "sport", "spot", "spout", "spray", "spree", "spur", "squad", "squat", "squid", |
| "stack", "staff", "stage", "stain", "stall", "stamp", "stand", "stank", "stark", "start", |
| "stash", "state", "stays", "steam", "steep", "stem", "step", "stew", "stick", "sting", "stir", |
| "stock", "stole", "stomp", "stony", "stood", "stool", "stoop", "stop", "storm", "stout", |
| "stove", "straw", "stray", "strut", "stuck", "stud", "stuff", "stump", "stung", "stunt", |
| "suds", "sugar", "sulk", "surf", "sushi", "swab", "swan", "swarm", "sway", "swear", "sweat", |
| "sweep", "swell", "swept", "swim", "swing", "swipe", "swirl", "swoop", "swore", "syrup", |
| "tacky", "taco", "tag", "take", "tall", "talon", "tamer", "tank", "taper", "taps", "tarot", |
| "tart", "task", "taste", "tasty", "taunt", "thank", "thaw", "theft", "theme", "thigh", "thing", |
| "think", "third", "thorn", "those", "throb", "thud", "thumb", "thump", "thus", "tiara", |
| "tidal", "tidy", "tiger", "tile", "tilt", "tint", "tiny", "trace", "track", "trade", "train", |
| "trait", "trap", "trash", "tray", "treat", "tree", "trek", "trend", "trial", "tribe", "trick", |
| "trio", "trout", "truce", "truck", "trump", "trunk", "try", "tug", "tulip", "tummy", "turf", |
| "tusk", "tutor", "tutu", "tux", "tweak", "tweet", "twice", "twine", "twins", "twirl", "twist", |
| "uncle", "uncut", "undo", "unify", "union", "unit", "untie", "upon", "upper", "urban", "used", |
| "user", "usher", "utter", "value", "vapor", "vegan", "venue", "verse", "vest", "veto", "vice", |
| "video", "view", "viral", "virus", "visa", "visor", "vixen", "vocal", "voice", "void", "volt", |
| "voter", "vowel", "wad", "wafer", "wager", "wages", "wagon", "wake", "walk", "wand", "wasp", |
| "watch", "water", "wavy", "wheat", "whiff", "whole", "whoop", "wick", "widen", "widow", |
| "width", "wife", "wifi", "wilt", "wimp", "wind", "wing", "wink", "wipe", "wired", "wiry", |
| "wise", "wish", "wispy", "wok", "wolf", "womb", "wool", "woozy", "word", "work", "worry", |
| "wound", "woven", "wrath", "wreck", "wrist", "xerox", "yahoo", "yam", "yard", "year", "yeast", |
| "yelp", "yield", "yo-yo", "yodel", "yoga", "yoyo", "yummy", "zebra", "zero", "zesty", "zippy", |
| "zone", "zoom", |
| ]; |