From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.2.5 Date: Wed, 1 Oct 2008 15:36:35 +0600 From: Denis Klimov To: ALT Linux Team development discussions Message-Id: <20081001153635.7aa9de8d.zver@altlinux.org> In-Reply-To: <679044850810010159y25b78ad6k2ddb439fe03fe158@mail.gmail.com> References: <20081001145620.dfa16205.zver@altlinux.org> <679044850810010159y25b78ad6k2ddb439fe03fe158@mail.gmail.com> Organization: IDO X-Mailer: Sylpheed version 2.2.9 (GTK+ 2.12.11; x86_64-alt-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Subject: Re: [devel] =?koi8-r?b?79PPwsXOzs/T1Mkg88kgxMzRIHg4Nl82NA==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.10b3 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Oct 2008 09:36:41 -0000 Archived-At: List-Archive: List-Post: On Wed, 1 Oct 2008 12:59:44 +0400 Damir Shayhutdinov wrote: > На x86_64 sizeof(long) = sizeof(void*) = 8 байт. > а sizeof(int) = 4 байт. > > Хотите писать кроссплатформенный код - освойте введенные в C99 > (stdint.h) типы intN_t. > > То есть в вашем случае для 4-байтового знакового целого надо было > использовать тип int32_t а не long. Поправил. разбираться стало нормально. Но. возникла проблема одна. На x86_64 вывод стал таким: Netflow version: 5 bytes: 17408 src_addr: 113.0.168.192 dst_addr: 26.0.168.192 src_port: 1023 src_port: 65535 proto: 6 Т.е ip перевернутые. Пробовал добавлять пару строк ((struct flow *)p)->src_addr.s_addr = htonl(((struct flow *)p)->src_addr.s_addr); ((struct flow *)p)->dst_addr.s_addr = htonl(((struct flow *)p)->dst_addr.s_addr); перед выводом. Ничего не поменялось. Пробовал заменять htonl на ntohl - все равно так же. Судя по ману на inet_ntoa ему надо network byte order. Так что htonl правильное. Но не помогает. Так же надо заметить, что в i586 у меня правильно работает только если нету этих строк. При их добавлении (с htonl или ntohl) - порядок меняется на неверный. Небольшая оговорка. i586 - это у меня контейнер. HN которого x86_64. хотя не думаю что это должно на него влиять. Код стал таким http://pastebin.ca/1215627 -- Denis Klimov zver