dir-300-b1 | dir-600-b1 | dir-600-b2 | dir-615-h1 | dir-620-a1)
                status_led="d-link:green:status"
                ;;
+       dir-645)
+               status_led="d-link:green:wps"
+               ;;
        dap-1350)
                status_led="d-link:blue:power"
                ;;
 
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+
+. /lib/ramips.sh
+
+fix_seama_header() {
+       local part=$1
+
+       mtd fixseama $part
+}
+
+board=$(ramips_board_name)
+
+case "$board" in
+dir-645)
+       fix_seama_header kernel
+       ;;
+esac
 
                ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
                ;;
 
+       dir-645)
+               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+               ucidef_add_switch "switch0" "1" "1"
+               ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 6t"
+               ucidef_add_switch_vlan "switch0" "2" "0 6t"
+               ;;
+
        f5d8235-v1 | \
        f5d8235-v2 | \
        ur-336un)
                wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
                ;;
 
+       dir-645)
+               lan_mac=$(ramips_get_mac_nvram nvram lanmac)
+               wan_mac=$(ramips_get_mac_nvram nvram wanmac)
+               ;;
+
        esr-9753 | \
        ur-336un)
                lan_mac=$(ramips_get_mac_binary devdata 16388)
 
                 mac=$(ramips_get_mac_binary devdata 16388)
                 ifconfig eth0 hw ether $mac 2>/dev/null
                 ;;
+       dir-645)
+               mac=$(ramips_get_mac_nvram nvram lanmac)
+               mac=$(maccalc or "$mac" "02:00:00:00:00:00")
+               ifconfig eth0 hw ether $mac 2>/dev/null
+               ;;
        dap-1350)
                mac=$(ramips_get_mac_binary devdata 46)
                ifconfig eth0 hw ether $mac 2>/dev/null
 
        *"DIR-615 H1")
                name="dir-615-h1"
                ;;
+       *"DIR-645")
+               name="dir-645"
+               ;;
         *"DAP-1350")
                 name="dap-1350"
                 ;;
 
                }
                return 0
                ;;
+       dir-645)
+               [ "$magic" != "5ea3a417" ] && {
+                       echo "Invalid image type."
+                       return 1
+               }
+               return 0
+               ;;
        esac
 
        echo "Sysupgrade is not yet supported on $board."