blob: 86c5e74e5276fa74c526d0b44eb1057cd9e36f89 [file] [log] [blame]
// 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",
];