From owner-freebsd-stable@FreeBSD.ORG Wed Nov 16 11:13:43 2005 Return-Path: X-Original-To: freebsd-stable@freebsd.org Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 691FC16A420 for ; Wed, 16 Nov 2005 11:13:43 +0000 (GMT) (envelope-from voucko@gmx.li) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.FreeBSD.org (Postfix) with SMTP id A495D43D53 for ; Wed, 16 Nov 2005 11:13:42 +0000 (GMT) (envelope-from voucko@gmx.li) Received: (qmail invoked by alias); 16 Nov 2005 11:13:40 -0000 Received: from p54B04A7E.dip.t-dialin.net (EHLO [192.168.0.2]) [84.176.74.126] by mail.gmx.net (mp021) with SMTP; 16 Nov 2005 12:13:40 +0100 X-Authenticated: #10517968 Message-ID: <437B1466.8030202@gmx.li> Date: Wed, 16 Nov 2005 12:13:42 +0100 From: Michael Voucko User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-AT; rv:1.7.12) Gecko/20050915 X-Accept-Language: de, en MIME-Version: 1.0 To: freebsd-stable@freebsd.org Content-Type: multipart/mixed; boundary="------------000304070202090800010101" X-Y-GMX-Trusted: 0 Subject: "message too long" when sending broadcasts X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Nov 2005 11:13:43 -0000 This is a multi-part message in MIME format. --------------000304070202090800010101 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi, I'm trying to install the latest version of heartbeat (linux-ha), which unfortunately is not available from the ports tree yet. Setup is two boxes running (5.4-STABLE FreeBSD from Oct 17 2005) both connected to a hub with lnc NICs on a private 10.0.0.0/24 subnet (actually its only a 'simulated hub' provided by VMWare if this matters). After some initial struggles configuration, build and installations works as expected - but now the most basic parts of this application won't work anymore. When trying to use UDP broadcast messages for the heartbeat it would error out with "Message too long" for packets larger than 1472 bytes, in other words as soon as fragmentation of the package would be necessary (MTU is 1500). I received a code snippet from the heartbeat developers to isolate the problem (create sender and receiver socket, send broadcast packets of a certain size). To rule out VMware as the basic problem I tried real boxes but the problem persists. Is there any size restriction for UDP broadcast messages? Is there anything which prevents UDP broadcast from being fragmented? I searched RFCs, man pages for socket, setsockopt, ioctl, sendto and other places but did not find anything that could explain the behaviour (which seems to be no problem on other OS). Any pointers, comments? Thanks, Michael N.B: Code snippet is attached in case somebody cares to take a look - it works fine for me when using "./bcast-test -r -i lnc1 -p 1500" on the receiving box and "./bcast-test -r -i lnc1 -p XXX" on the sending box for XXX < 1473. --------------000304070202090800010101 Content-Type: text/plain; name="bcast.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="bcast.c" I2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxp Yi5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNp bmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KI2luY2x1ZGUgPG5l dC9pZi5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgoKI2Rl ZmluZSBQT1JUIDY5NAojZGVmaW5lIE1BWEJVRiAyMDQ4Cgp2b2lkCnVzYWdlKGludCBhcmdj LCBjaGFyICoqIGFyZ3YpCnsKCXByaW50ZigiVXNhZ2U6ICVzIFstc10gWy1yXSAtcCBwYWNr ZXRzaXplIC1pIGV0aDAvZXRoMS8uLi5cbiIsIGFyZ3ZbMF0pOwoJcHJpbnRmKCIjZGVmYXVs dCBpcyB0byByZWNlaXZlXG4iKTsKCXJldHVybjsKfQoKaW50CmNyZWF0ZV9yZWN2X3NvY2tl dChjaGFyKiBpZm5hbWUpCnsKCXN0cnVjdCBzb2NrYWRkcl9pbiBteV9hZGRyOwoJaW50IHNv Y2tmZDsKCWludCBvbmUgPSAxOwoJc3RydWN0IGlmcmVxIGk7CgoKCW1lbXNldCgmbXlfYWRk ciwgMCwgc2l6ZW9mKG15X2FkZHIpKTsKCW15X2FkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7 CglteV9hZGRyLnNpbl9wb3J0ID0gaHRvbnMoUE9SVCk7CglteV9hZGRyLnNpbl9hZGRyLnNf YWRkciA9IGh0b25sKElOQUREUl9BTlkpOwoKCWlmICgoIHNvY2tmZCA9IHNvY2tldChBRl9J TkVULCBTT0NLX0RHUkFNLCAwKSkgPT0gLTEpewoJCXByaW50ZigiRXJyb3IgZ2V0dGluZyBz b2NrZXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwoJCWV4aXQoMSk7Cgl9CgoJaWYgKHNl dHNvY2tvcHQoIHNvY2tmZCwgU09MX1NPQ0tFVCwKCQkJU09fUkVVU0VBRERSLCAoY29uc3Qg dm9pZCopJm9uZSwgc2l6ZW9mKG9uZSkpIDwgMCl7CgkJcHJpbnRmKCJFcnJvciBzZXR0aW5n IHNvY2tldCBvcHRpb24gU09fUkVVU0VBRERSOiAlc1xuIiwKCQkgICAgICAgc3RyZXJyb3Io ZXJybm8pKTsKCQlleGl0KDEpOwoJfQoKCXN0cmNweShpLmlmcl9uYW1lLCBpZm5hbWUpOwoK CWlmIChiaW5kKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmIG15X2FkZHIsIHNpemVv ZihzdHJ1Y3Qgc29ja2FkZHIpKQoJICAgIDwgMCl7CgkJcHJpbnRmKCJFcnJvciBiaW5kaW5n IHNvY2tldDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CgkJZXhpdCgxKTsKCX0KCglyZXR1 cm4gc29ja2ZkOwp9CgoKdm9pZApyZWN2X3BhY2tldHMoaW50IHNvY2tmZCwgaW50IHBhY2tl dHNpemUpCnsKCWludCBidWZzaXplID0gcGFja2V0c2l6ZSArIDEwMDsKCWNoYXIgYnVmW01B WEJVRl07CglpbnQgbjsKCXN0cnVjdCBzb2NrYWRkcl9pbiB0aGVpcmFkZHI7CglpbnQgbGVu ID0gc2l6ZW9mKHRoZWlyYWRkcik7CgoJd2hpbGUoMSl7CgoJCW1lbXNldChidWYsIDAsIE1B WEJVRik7CgkJaWYgKChuID0gcmVjdmZyb20oc29ja2ZkLCBidWYsIGJ1ZnNpemUgLSAxLCAw LAoJCQkJICAoc3RydWN0IHNvY2thZGRyKikmdGhlaXJhZGRyLCAmbGVuKSkgPT0gLTEpewoJ CQlwcmludGYoIkVycm9yIHJlY2VpdmluZyBmcm9tIHNvY2tldDogJXNcbiIsIHN0cmVycm9y KGVycm5vKSk7CgkJCWV4aXQoMSk7CgkJfQoJCXByaW50ZigiTWVzc2FnZSByZWNlaXZlZDog KCVkIGJ5dGVzKVxuJXNcbiIsIG4sIGJ1Zik7Cgl9Cgp9CgppbnQKY3JlYXRlX3NlbmRfc29j a2V0KGNoYXIqIGlmbmFtZSkKewoJaW50IHNvY2tmZDsKCWludCBvbmUgPSAxOwoJc3RydWN0 IGlmcmVxIGk7CglzdHJjcHkoaS5pZnJfbmFtZSxpZm5hbWUpOwoKCWlmICgoc29ja2ZkID0g c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApKSA8PSAwKSB7CgkJcHJpbnRmKCJFcnJv ciBpbiBnZXR0aW5nIHNvY2tldDogJXMiLCBzdHJlcnJvcihlcnJubykpOwoJCWV4aXQoMSk7 Cgl9CgoKCWlmIChzZXRzb2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fQlJPQURDQVNU LCAoY29uc3Qgdm9pZCopICZvbmUsIHNpemVvZihvbmUpKSA9PSAtMSkKCQl7CgkJCXByaW50 ZigiRXJyb3Igc2V0dGluZyBzb2NrZXQgb3B0aW9uIFNPX0JST0FEQ0FTVDogc29ja2ZkID0l ZCAsICVzXG4iLAoJCQkgICAgICAgc29ja2ZkLCBzdHJlcnJvcihlcnJubykpOwoJCQljbG9z ZShzb2NrZmQpOwoJCQlleGl0KDEpOwoJCX0KCglyZXR1cm4gc29ja2ZkOwp9CgoKaW50Cmdl dF9iYWRkcihzdHJ1Y3Qgc29ja2FkZHJfaW4qIGJhZGRyLCBjaGFyKiBpZm5hbWUpCnsKCXN0 cnVjdCBpZnJlcSBpZnI7CglpbnQgZmQ7CglpbnQgcmV0dXJuX3ZhbDsKCglmZCA9IHNvY2tl dCAoUEZfSU5FVCwgU09DS19ER1JBTSwgMCk7CgoJaWYgKGZkIDwwKSB7CgkJcHJpbnRmKCJF cnJvciBvcGVuaW5nIHNvY2tldDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CgkJZXhpdCgx KTsKCX0KCglzdHJjcHkgKGlmci5pZnJfbmFtZSwgaWZuYW1lKTsKCglyZXR1cm5fdmFsID0g aW9jdGwoZmQsIFNJT0NHSUZCUkRBRERSLCAmaWZyKTsKCWlmIChyZXR1cm5fdmFsID09IDAg KQoJCXsKCQkJaWYgKGlmci5pZnJfYnJvYWRhZGRyLnNhX2ZhbWlseSA9PSBBRl9JTkVUKQoJ CQkJewoJCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW5fcHRyOwoJCQkJCW1lbWNweSgmc2lu X3B0ciwgJmlmci5pZnJfYnJvYWRhZGRyLAoJCQkJCSAgICAgICBzaXplb2Yoc2luX3B0cikp OwoJCQkJCW1lbWNweSgmYmFkZHItPnNpbl9hZGRyLCAmc2luX3B0ci5zaW5fYWRkciwKCQkJ CQkgICAgICAgc2l6ZW9mKGJhZGRyLT5zaW5fYWRkcikpOwoJCQkJfQoJCQllbHNlCgkJCQl7 CgkJCQkJcHJpbnRmKCJXcm9uZyBmYW1pbHkgZm9yIGJyb2FkY2FzdCBpbnRlcmZhY2UgOiAl cyIsCgkJCQkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CgkJCQkJZXhpdCgxKTsKCQkJCX0K CgkJfQoJZWxzZQoJCXsKCQkJcHJpbnRmKCJHZXQgYnJvYWRjYXN0IGZvciBpbnRlcmZhZGUg ZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKCQkJZXhpdCgxKTsKCQl9CgoJYmFk ZHItPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwoJYmFkZHItPnNpbl9wb3J0ID0gaHRvbnMoUE9S VCk7CgoJcmV0dXJuIDA7Cn0KCgoKdm9pZApzZW5kX3BhY2tldHMoaW50IHNvY2tmZCwgc3Ry dWN0IHNvY2thZGRyKiBhZGRyLCBpbnQgcGFja2V0c2l6ZSkKewoJaW50IGk7CgljaGFyIHBh Y2tldFtNQVhCVUZdOwoJY2hhciBzaXplWzEwXTsKCWludCByZXQ7CgoJbWVtc2V0KHBhY2tl dCwgJ0EnLCBwYWNrZXRzaXplKTsKCXBhY2tldFtwYWNrZXRzaXplLTFdID0gJ1wwJzsKCXNw cmludGYoc2l6ZSwgIiVkIiwgcGFja2V0c2l6ZSk7CglzdHJjcHkocGFja2V0LCBzaXplKTsK CXBhY2tldFtzdHJsZW4oc2l6ZSldID0gJyAnOwoKCWZvciAoIGkgPSAwOyBpIDwgMTAwMDsg aSsrKQoJCXsKCQkJcHJpbnRmKCJzZW5kaW5nIHBhY2tldCAlZFxuIiwgaSk7CgkJCWlmICgg KHJldCA9IHNlbmR0byhzb2NrZmQsIHBhY2tldCwgcGFja2V0c2l6ZSwgMCxhZGRyICxzaXpl b2Yoc3RydWN0IHNvY2thZGRyKSkpCgkJCSAgICAgIT0gcGFja2V0c2l6ZSkKCQkJCXsKCQkJ CQlwcmludGYoIlVuYWJsZSB0byBzZW5kIGJjYXN0IHBhY2tldHM6ICVzXG4iLCBzdHJlcnJv cihlcnJubykpOwoJCQkJCWV4aXQoMSk7CgkJCQl9CgkJfQoKfQoKCgppbnQKbWFpbihpbnQg YXJnYywgY2hhcioqIGFyZ3YpCnsKCglpbnQgaXNzZW5kZXIgPSAwOwoJaW50IGlzcmVjdmVy ID0gMDsKCWludCBwYWNrZXRzaXplID0gMDsKCWludCBjOwoJY2hhciogaWZuYW1lOwoKCXdo aWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgInNyaTpwOiIpKSAhPSAtMSkKCQlzd2l0 Y2goYykKCQkJewoJCQljYXNlICdzJzoKCQkJCWlzc2VuZGVyID0xOwoJCQkJYnJlYWs7CgkJ CWNhc2UgJ3InOgoJCQkJaXNyZWN2ZXIgPTE7CgkJCQlicmVhazsKCQkJY2FzZSAnaSc6CgkJ CQlpZm5hbWUgPSBvcHRhcmc7CgkJCQlicmVhazsKCQkJY2FzZSAncCc6CgkJCQlwYWNrZXRz aXplID0gYXRvaShvcHRhcmcpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJz8nOgoJCQkJcHJpbnRm KCJ1bmtub3duIG9wdGlvbnNcbiIpOwoJCQkJdXNhZ2UoYXJnYywgYXJndik7CgkJCQlyZXR1 cm4oMSk7CgkJCX0KCglpZiAoaXNzZW5kZXIgJiYgaXNyZWN2ZXIpCgkJewoJCQlwcmludGYo InNlbmRlciBhbmQgcmVjdmVyIGluIG9uZSBwcm9ncmFtIgoJCQkgICAgICAgImlzIG5vdCBz dXBwb3J0ZWRcbiIpOwoJCQl1c2FnZShhcmdjLCBhcmd2KTsKCQkJZXhpdCgxKTsKCgkJfQoK CWlmIChwYWNrZXRzaXplID09IDApCgkJewoJCQlwcmludGYoImludmFsaWQgcGFja2V0c2l6 ZVxuIik7CgkJCXVzYWdlKGFyZ2MsIGFyZ3YpOwoJCQlleGl0KDEpOwoKCQl9CgoJaWYgKGlz c2VuZGVyKQoJCXsKCQkJaW50IHNlbmRfc29ja2ZkID0gY3JlYXRlX3NlbmRfc29ja2V0KGlm bmFtZSk7CgoJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gYmFkZHI7CgoJCQlnZXRfYmFkZHIoJmJh ZGRyLCBpZm5hbWUpOwoKCQkJc2VuZF9wYWNrZXRzKHNlbmRfc29ja2ZkLChzdHJ1Y3Qgc29j a2FkZHIqKSZiYWRkciwgcGFja2V0c2l6ZSk7CgoJCQlwcmludGYoIlNlbmRpbmcgZmluaXNo ZWQhXG4iKTsKCgkJfQoJZWxzZQoJCXsKCQkJaW50IHJlY3Zfc29ja2ZkID0gY3JlYXRlX3Jl Y3Zfc29ja2V0KGlmbmFtZSk7CgkJCXJlY3ZfcGFja2V0cyggcmVjdl9zb2NrZmQsIHBhY2tl dHNpemUpOwoJCX0KCglwcmludGYoIlByb2dyYW0gZW5kcyBzdWNjZXNzZnVsbHkhXG4iKTsK CXJldHVybiAxOwp9Cg== --------------000304070202090800010101--