の組み合わせの場合の話.
まず,vmmon.o の compile で
include/asm/page.h: In function 'pte_t native_make_pte(long unsigned int)':
include/asm/page.h:111: error: expected primary-expression before ')' token
include/asm/page.h:111: error: expected ';' before '{' token
include/asm/page.h:111: error: expected primary-expression before '.' token
include/asm/page.h:111: error: expected `;' before '}' token
とかでこける.これに関しては,
diff -uwr /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h.orig /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h
--- /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h.orig 2007-06-26 14:51:30.000000000 +0900
+++ /usr/src/linux-headers-2.6.22-rc5/include/asm/page.h 2007-06-26 14:51:48.000000000 +0900
@@ -106,10 +106,12 @@
{
return (pgd_t) { val };
}
+/*
static inline pte_t native_make_pte(unsigned long val)
{
return (pte_t) { .pte_low = val };
}
+*/
#define HPAGE_SHIFT 22
#include <asm-generic/pgtable-nopmd.h>
みたいな header 側に patch をあててとりあえず回避. ちなみに該当箇所の kernel 側の変更は <URL:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3dc494e86d1c93afd4c66385f270899dbfae483d> に由来.
次に,vmnet.o の compile で
/tmp/vmware-config0/vmnet-only/userif.c: In function 'VNetCopyDatagramToUser': /tmp/vmware-config0/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'h' /tmp/vmware-config0/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'nh' /tmp/vmware-config0/vmnet-only/userif.c:639: error: 'const struct sk_buff' has no member named 'h'
とかでこける.これは,kernel 側の <URL:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=b0e380b1d8a8e0aca215df97702f99815f05c094> という変更に由来.
つまり
変更すれば OK.以下のような patch を vmnet.tar 内の file にあてる.
diff -uwr a/vmnet-only/bridge.c b/vmnet-only/bridge.c
--- a/vmnet-only/bridge.c 2006-11-13 07:50:53.000000000 +0900
+++ b/vmnet-only/bridge.c 2007-06-26 14:44:58.000000000 +0900
@@ -1072,12 +1072,12 @@
VNetBridgeComputeHeaderPos(struct sk_buff *skb) // IN: buffer to examine
{
/* Maybe some kernel gets it right... */
- if (skb->h.raw != skb->nh.raw) {
+ if (skb->transport_header != skb->network_header) {
return;
}
switch (be16_to_cpu(skb->protocol)) {
case ETH_P_IP:
- skb->h.raw = skb->nh.raw + (skb->nh.raw[0] & 0x0F) * 4;
+ skb->transport_header = skb->network_header + (skb->network_header[0] & 0x0F) * 4;
return;
default:
LOG(3, (KERN_DEBUG "Unknown EII protocol %04X: csum at %d\n",
@@ -1163,7 +1163,7 @@
# endif
if (bridge->smac) {
- if (VNetCallSMACFunc(bridge->smac, &skb, skb->mac.raw,
+ if (VNetCallSMACFunc(bridge->smac, &skb, skb->mac_header,
SMAC_CheckPacketFromHost) !=
PacketStatusForwardPacket) {
LOG(4, (KERN_NOTICE "bridge-%s: packet dropped .\n",
@@ -1187,7 +1187,7 @@
#endif
#endif
- skb_push(skb, skb->data - skb->mac.raw);
+ skb_push(skb, skb->data - skb->mac_header);
LOG(3, (KERN_DEBUG "bridge-%s: receive %d\n",
bridge->name, (int) skb->len));
diff -uwr a/vmnet-only/userif.c b/vmnet-only/userif.c
--- a/vmnet-only/userif.c 2006-11-13 07:04:40.000000000 +0900
+++ b/vmnet-only/userif.c 2007-06-26 14:38:37.000000000 +0900
@@ -630,13 +630,13 @@
*/
if (skb->pkt_type == PACKET_OUTGOING && /* Packet must be outgoing */
skb->ip_summed == VM_CHECKSUM_PARTIAL && /* Without checksum */
- skb->h.raw != skb->nh.raw && /* We must know where header is */
+ skb->transport_header != skb->network_header && /* We must know where header is */
skb->len == count) { /* No truncation may occur */
size_t skl;
int csum;
u_int16_t csum16;
- skl = skb->h.raw - skb->data;
+ skl = skb->transport_header - skb->data;
if (VNetCopyDatagram(skb, buf, skl)) {
return -EFAULT;
}
diff -uwr a/vmnet-only/vnetInt.h b/vmnet-only/vnetInt.h
--- a/vmnet-only/vnetInt.h 2005-06-19 10:00:03.000000000 +0900
+++ b/vmnet-only/vnetInt.h 2007-06-26 14:43:34.000000000 +0900
@@ -25,8 +25,8 @@
#define DEV_QUEUE_XMIT(skb, dev, pri) ( \
(skb)->dev = (dev), \
(skb)->priority = (pri), \
- (skb)->mac.raw = (skb)->data, \
- (skb)->nh.raw = (skb)->data + sizeof (struct ethhdr), \
+ (skb)->mac_header = (skb)->data, \
+ (skb)->network_header = (skb)->data + sizeof (struct ethhdr), \
dev_queue_xmit(skb) \
)
#ifdef KERNEL_2_3_15
Last-modified: Fri Jul 20 10:44:04 +0900 2007