Existem várias razões possíveis.
Diferentes tipos de interface
Uma possibilidade: ifconfig
delega a impressão do endereço de hardware para a implementação da interface. A impressão real é executada por uma função na estrutura interface
da interface específica em net-tools-1.60
(de aqui ), chamado por lib/interface.c
, linha 678:
printf(_("HWaddr %s "), hw->print(ptr->hwaddr));
Consulte o código-fonte para nettools-1.60
in lib/hw.c
para obter uma lista de tipos de interface suportados: Existem implementações separadas para ethernet, fibra, token ring, etc.
Agora para a função de impressão real: Exemplo: lib/ether.c
:
/* Display an Ethernet address in readable format. */
static char *pr_ether(unsigned char *ptr)
{
static char buff[64];
snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X",
(ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
(ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
);
return (buff);
}
Os diferentes tipos de interfaces de rede podem ser implementados para exibir o mesmo tipo de informação de forma diferente usando x
s minúsculas na string de formatação (ou seja, %02x
em vez de %02X
). Por exemplo, a interface IrDA usa dígitos hexadecimais minúsculos ( lib/irda.c
):
/*
* Function irda_print (ptr)
*
* Print hardware address of interface
*
*/
static char *irda_print(unsigned char *ptr)
{
static char buff[8];
sprintf(&buff[strlen(buff)], "%02x:%02x:%02x:%02x", ptr[3], ptr[2],
ptr[1], ptr[0]);
return (buff);
}
Patches para ifconfig
Outra possibilidade e provavelmente a razão aqui: As distribuições geralmente alteram os pacotes de software. O trecho de código acima é do original net-tools-1.60
, vamos olhar para o Debian, ou melhor, seu patch net-tools-1.60-23.diff
(de aqui ):
+--- net-tools.orig/lib/ether.c
++++ net-tools/lib/ether.c
[...]
+@@ -39,7 +39,7 @@ static char *pr_ether(unsigned char *ptr
+ {
+ static char buff[64];
+
+- snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X",
++ snprintf(buff, sizeof(buff), "%02x:%02x:%02x:%02x:%02x:%02x",
+ (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
+ (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
+ );
Então o Debian fez o patch do código-fonte para ifconfig
para sua distribuição, que também pode ser escolhida pelo Ubuntu ( Wikipedia : " pacotes do Ubuntu são baseados em pacotes do ramo instável do Debian ").