Fix error in PXE arch names and add ARM32 and ARM64.
diff --git a/CHANGELOG b/CHANGELOG
index f3220d8..7012918 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -74,7 +74,15 @@
 	    To avoid filling logs in configurations which define
 	    many upstream nameservers, don't log more that 30 servers.
 	    The number to be logged can be changed as SERVERS_LOGGED
-	    in src/config.h. 
+	    in src/config.h.
+
+	    Swap the values if BC_EFI and x86-64_EFI in --pxe-service. 
+	    These were previously wrong due to an error in RFC 4578.
+	    If you're using BC_EFI to boot 64-bit EFI machines, you
+	    will need to update your config.
+
+	    Add ARM32_EFI and ARM64_EFI as valid architectures in
+	    --pxe-service.
 
 
 version 2.75
diff --git a/man/dnsmasq.8 b/man/dnsmasq.8
index dacd9ce..68d77a2 100644
--- a/man/dnsmasq.8
+++ b/man/dnsmasq.8
@@ -1358,7 +1358,7 @@
 This specifies a boot option which may appear in a PXE boot menu. <CSA> is
 client system type, only services of the correct type will appear in a
 menu. The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
-Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI; an
+Intel_Lean_Client, IA32_EFI,  X86-64_EFI, Xscale_EFI, BC_EFI, ARM32_EFI and ARM64_EFI; an
 integer may be used for other types. The
 parameter after the menu text may be a file name, in which case dnsmasq acts as a
 boot server and directs the PXE client to download the file by TFTP,
diff --git a/src/option.c b/src/option.c
index 0b35500..d8c57d6 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3298,7 +3298,8 @@
        {
 	 struct pxe_service *new = opt_malloc(sizeof(struct pxe_service));
 	 char *CSA[] = { "x86PC", "PC98", "IA64_EFI", "Alpha", "Arc_x86", "Intel_Lean_Client",
-			 "IA32_EFI", "BC_EFI", "Xscale_EFI", "x86-64_EFI", NULL };  
+			 "IA32_EFI", "x86-64_EFI", "Xscale_EFI", "BC_EFI",
+			 "ARM32_EFI", "ARM64_EFI", NULL };  
 	 static int boottype = 32768;
 	 
 	 new->netid = NULL;