grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RFC Patch [1/2] PXE Add support for proxy DHCP -- Common Code


From: Mroczek, Joseph T
Subject: RFC Patch [1/2] PXE Add support for proxy DHCP -- Common Code
Date: Sat, 19 Apr 2014 00:34:04 +0000

Sorry about the HTML in previous message.

Hello:

This patch adds support for merging data from 2 different dhcp packets into a 
single source with precedence based on PXE and uEFI specs.

~joe


diff -Naur grub-2.02~beta2/grub-core/net/bootp.c 
grub-2.02~beta2-jtm-clean/grub-core/net/bootp.c
--- grub-2.02~beta2/grub-core/net/bootp.c        2013-12-24 11:40:31.000000000 
-0500
+++ grub-2.02~beta2-jtm-clean/grub-core/net/bootp.c                2014-04-18 
19:26:44.862208600 -0400
@@ -161,6 +161,42 @@

 #define OFFSET_OF(x, y) ((grub_size_t)((grub_uint8_t *)((y)->x) - 
(grub_uint8_t *)(y)))

+void grub_net_merge_dhcp_ack (struct grub_net_bootp_packet *target,
+                              struct grub_net_bootp_packet *source)
+{
+  if (source->opcode)
+    target->opcode = source->opcode;
+  if (source->hw_type)
+    target->hw_type = source->hw_type;
+  if (source->hw_len)
+    target->hw_len = source->hw_len;
+  if (source->gate_hops)
+    target->gate_hops = source->gate_hops;
+  if (source->ident)
+    target->ident = source->ident;
+  if (source->seconds)
+    target->seconds = source->seconds;
+  if (source->flags)
+    target->flags = source->flags;
+  if (source->client_ip)
+    target->client_ip = source->client_ip;
+  if (source->your_ip)
+    target->your_ip = source->your_ip;
+  if (source->server_ip)
+    target->server_ip = source->server_ip;
+  if (source->gateway_ip)
+    target->gateway_ip = source->gateway_ip;
+  if (source->mac_addr)
+    grub_memcpy (&target->mac_addr, &source->mac_addr, 6);
+  if (source->server_name[0])
+    grub_memcpy (&target->server_name, &source->server_name, 64);
+  if (source->boot_file[0])
+    grub_memcpy (&target->boot_file, &source->boot_file, 128);
+  if (source->vendor[0])
+    grub_memcpy (&target->vendor, &source->vendor, 60);
+}
+
+
struct grub_net_network_level_interface *
grub_net_configure_by_dhcp_ack (const char *name,
                                                               struct 
grub_net_card *card,
diff -Naur grub-2.02~beta2/include/grub/net.h 
grub-2.02~beta2-jtm-clean/include/grub/net.h
--- grub-2.02~beta2/include/grub/net.h               2013-12-24 
11:40:31.000000000 -0500
+++ grub-2.02~beta2-jtm-clean/include/grub/net.h       2014-04-18 
19:26:44.866208600 -0400
@@ -415,7 +415,7 @@
   grub_net_bootp_mac_addr_t mac_addr;
   char server_name[64];
   char boot_file[128];
-  grub_uint8_t vendor[0];
+  grub_uint8_t vendor[60];
} GRUB_PACKED;

 #define               GRUB_NET_BOOTP_RFC1048_MAGIC_0              0x63
@@ -436,6 +436,10 @@
     GRUB_NET_BOOTP_END = 0xff
   };

+void 
+grub_net_merge_dhcp_ack (struct grub_net_bootp_packet *target,
+                                             struct grub_net_bootp_packet 
*source);
+
struct grub_net_network_level_interface *
grub_net_configure_by_dhcp_ack (const char *name,
                                                               struct 
grub_net_card *card,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]