ruby / ruby/ipaddr

IPv6 hton layout does not match ipv6_mreq

Abierto
#63 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Ruby
Estrellas
82
Forks
42
Merge medio
2 h 24 min
PR fusionados (30 d)
3

Descripción

Given this C program:

#include <netinet/in.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char * argv[])
{
        struct ipv6_mreq req;
        memset(&req, 0, sizeof(req));
	req.ipv6mr_multiaddr.s6_addr[0] = 0xFF;
	req.ipv6mr_multiaddr.s6_addr[1] = 0x02;
	req.ipv6mr_multiaddr.s6_addr[15] = 0xFB;

        uint8_t * ptr = (uint8_t *)&req;
        for(int i = 0; i < sizeof(req); i++) {
                fprintf(stderr, "\\%#02x", ptr[i]);
        }

        fprintf(stderr, "\n");
        return 0;
}

The bytes of the ipv6_mreq struct are: \0xff\0x2\00\00\00\00\00\00\00\00\00\00\00\00\00\0xfb\00\00\00\00

However, if I use this Ruby program:

require "ipaddr"

p IPAddr.new("ff02::fb").hton

The bytes are: "\xFF\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFB"

I think hton should match the ipv6_mreq layout.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

El issue menciona IPAddr#hton y la estructura C ipv6_mreq; empieza por localizar la implementación de hton y las pruebas existentes en el repositorio ipaddr y, a continuación, compara las longitudes en bytes y los layouts de ambas representaciones. Se considera terminado cuando la relación esperada entre hton e ipv6_mreq se haya decidido y documentado mediante una prueba de regresión o un cambio de comportamiento claramente justificado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
c, ruby
Área
networking
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
46/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.