galactikboulay a écrit 620 commentaires

  • [^] # Re: Tiens, en parlant de Cisco...

    Posté par  . En réponse à la dépêche Comment des vendeurs essaient de breveter les solutions à des failles de sécurité qui leur sont fournies. Évalué à 1.

    On voit pas mal de téléphones IP Cisco dans des séries comme Alias
    ou 24 (y compris dans les 1ères saisons). Seulement il fallait bien
    regarder (en faisant pause la plupart du temps).

    Visiblement, dans la 4ème saison de 24 ils ont passé la vitesse
    supérieure (schémas de réseaux avec icones Cisco + le gros
    logo bien visible, le genre de dialogue que tu mentionnes...)

    Je pense que c'est une façon bien pratique (mais que je
    trouve choquante quand la série devient identique à un spot
    de pub) pour les producteurs de série de se faire financer, les
    sommes que doivent verser Cisco et les autres doivent être assez
    astronomiques.
  • [^] # Re: Terroriste!?

    Posté par  . En réponse à la dépêche Comment des vendeurs essaient de breveter les solutions à des failles de sécurité qui leur sont fournies. Évalué à 3.

    Euh, je ne voudrais pas dire, mais si on prend un châssis 4948 (48 ports 10/100/1000):

    http://www.cisco.com/en/US/products/ps6021/products_data_sheet0900a(...)

    Ca tient en 1U, ça a la possibilité d'avoir des alims redondantes,
    et ça commute/route/filtre à 72 Mpps, avec des ACLs. Ca sait faire
    tout ce qu'il faut au niveau 2 (QoS, filtrages d'adresses MAC,
    802.1x, spanning-tree, etc.) et au niveau 3 (RIP, OSPF, IS-IS, BGP, ...)

    Au niveau prix, je pense que c'est équivalent aux 20 PC.
    Il est vrai par contre que OpenBSD+pf doit offrir beaucoup plus de
    fonctions de filtrage. En revanche, sur certaines fonctions comme
    le multicast, à mon avis c'est avantage 4948.

    Pour ce qui est du 6500: Si tu mets 2 cartes superviseur, tu peux
    en avoir qui crame, ça bascule en quelques secondes sur la 2nde.
    Tu peux ajouter/retirer des cartes à chaud. Au niveau densité de
    ports, ça n'a rien à voir non plus.
    En terme de performances: avec une SUP720 (dernière carte
    superviseur sortie: 400 Mpps en IPv4 et 200 Mpps en IPv6). Sur
    un PC si tu arrives à 1 Mpps je pense que c'est déjà super bien.

    Pour les alimentations, ce sont des alimentations de 1900W
    ou 2500W (de mémoire). Par rapport à une 20aine de PC avec
    des alims à 400/500W, le compte est vite fait.

    Bref, comparer un PC à un 3600, un 7200 ou un routeur qui n'a pas
    d'ASIC, ça tient la route. Comparer un cluster de PC à un 6500,
    ça ne rime à rien.
  • # Low Performance USB Block driver

    Posté par  . En réponse au message Détection Apareil Phot Numérique. Évalué à 5.

    A mon sens tu peux utiliser /dev/ubb1 pour monter ton filesystem,
    mais ubb correspond au "Low Performance USB Block driver", que
    tu as du activer (cherche CONFIG_BLK_DEV_UB).

    Il s'active/se désactive dans les menus suivants de la configuration
    du noyau:

    - Device Drivers
    - Block Devices
    - Low Performance USB Block driver

    Il est indiqué dans l'aide: "Warning: Enabling this cripples the
    usb-storage driver". Donc c'est pour ça que usb-storage ne fonctionne
    pas chez toi.

    Mes 2 cents.
  • [^] # Re: c'est bon pour nous

    Posté par  . En réponse au journal Brevets Logiciels : Voir le vote (dans 25 minutes !). Évalué à 2.

    \o/ Vive le parlement européen, qui ne s'est pas laisser influencer par le lobbying des multinationales, et qui a suivi la voie de la raison !
  • # Adressage mémoire: offset(base,index,scale)

    Posté par  . En réponse au message assembleur gdb. Évalué à 4.

    (%eax,%edx,1) ne signifie pas (%eax + %edx + 1) mais (%eax + (%edx * 1)).

    Le dernier paramètre est un multiplicateur qui peut valoir 1, 2, 4 ou 8.
    Pour spécifier un offset, c'est avant la parenthèse ouvrante.
    Donc pour écrire (%eax + %edx + 1) ça serait: +1(%eax,%eax,1)

    Quelques explications sur GAS / assembleur inline GCC:

    http://www-106.ibm.com/developerworks/library/l-ia.html(...)
    http://www.opennet.ru/base/dev/gccasm.txt.html(...)
  • [^] # Re: Arf

    Posté par  . En réponse au journal Ecrasez un Mammouth !. Évalué à 1.

    Si tu veux passer outre, tu peux utiliser setsockopt() avec l'option SO_REUSEADDR (après avoir créé ton socket).

    Même s'il te reste des connexions en attente de fermeture (en FIN_WAIT), tu pourras "rebinder" le port.
  • # On est sauvés...

    Posté par  . En réponse à la dépêche Debian Sarge a des problèmes sérieux de gestion de la sécurité. Évalué à 7.

    "dans la security mailing list de Debian une discussion assez chaude a
    commencé." Si c'est du même accabit que les discussions habituelles,
    à savoir que les développeurs trollent au lieu de développer, on est
    pas sortis de l'auberge...

    -->[]
  • [^] # Re: Hey mais c'est génial ca!!

    Posté par  . En réponse à la dépêche Sender ID, passage en force de Microsoft. Évalué à 3.

    Le directeur ou le CPE ne sont pas plus habilités que toi à lire les mails
    des élèves...
  • [^] # Re: urpmi ?

    Posté par  . En réponse au message Debutant : Probleme avec le gcc. Évalué à 1.

    Juste une petite précision, cpp, ça signifie "C PreProcessor" et c'est donc tout à fait requis
    pour développer des programmes en C.

    Voir http://www.rpmfind.net/linux/rpm2html/search.php?query=gcc-cpp&(...) pour s'en convaincre.
  • [^] # Re: Y a un truc qui me tracasse

    Posté par  . En réponse au journal Filtrage sur Internet, les juges demandent l'impossible ?. Évalué à 3.

    Euh il doit possible capable de configurer un résolveur DNS
    sur son PC personnel qui va aller interroger un serveur DNS hébergé
    ailleurs, sur le port 5353 par exemple...

    Au pire, si la configuration du résolveur DNS est peu aisée, tu mets
    une règle de translation sur ton routeur de sortie qui va remplacer
    les accès au DNS de ton provider par un accès au port 5353 du
    serveur sus-cité.

    Le proxy transparent http est beaucoup plus emmerdant, parce
    si tu le contournes par un serveur proxy externe à toi, tout ton trafic
    web passe par ce serveur, et le http c'est quand même bcp plus
    consommateur que du dns.
  • # 2 interfaces avec le même subnet IP

    Posté par  . En réponse au message interfaces réseaux. Évalué à 2.

    Tu utilise le même sous-réseau IP (192.168.1.0/24) pour 2 interfaces
    réseaux différentes.

    Ton noyau va avoir du mal à déterminer sur quelle interface il doit
    envoyer un paquet à destination de ce réseau... Quand il doit
    parler à 192.168.1.1 par exemple, doit-il envoyer le paquet sur eth0
    ou sur eth2 ?

    Quel est ton but exactement en faisant ça ? Redondance,
    agrégation, ... ?
  • [^] # Re: Mode protégé et adressage "flat"

    Posté par  . En réponse au message accès à la mémoire. Évalué à 3.

    Exact, il y a une paire de CS/DS(ES,...) pour la partie user, et une autre
    pour la partie kernel.

    Dans arch/i386/kernel/head.S, il y a la définition de la GDT, avec notamment:

    .quad 0x00cf9a000000ffff /* 0x60 kernel 4GB code at 0x00000000 */
    .quad 0x00cf92000000ffff /* 0x68 kernel 4GB data at 0x00000000 */
    .quad 0x00cffa000000ffff /* 0x73 user 4GB code at 0x00000000 */
    .quad 0x00cff2000000ffff /* 0x7b user 4GB data at 0x00000000 */

    Donc ce qui t'intéresserait ce serait le "0x68", à mettre dans DS/ES/...

    Sachant quand même que si tu es en mode noyau, tu devrais déjà
    avoir cette valeur dans les registres.
  • # Mode protégé et adressage "flat"

    Posté par  . En réponse au message accès à la mémoire. Évalué à 3.

    En mode protégé, les registres de segments contiennent un index
    dans une table appelée GDT, c'est dans cette table que sont définis
    les segments (adresse de base, taille, attributs, ...).

    Linux sur i386 tourne en mode protégé et utilise une configuration
    des registres de segments (CS, DS, ES, ...) en mode "flat", c'est-à-dire
    couvrant tout l'espace d'adressage de 0 à 4 Go.

    Donc, en pratique, il n'y a pas à en tenir compte: tu veux accéder
    à la zone mémoire 0xe0001234 et mettre le contenu dans le registre
    EBX ? Tu fais: mov ebx, [0xe0001234]. Implicitement, c'est DS qui est
    utilisé. Sous Linux/x86, je crois me rappeler que DS=ES=FS=GS.

    Par contre, concrètement parlant, qu'est-ce que tu veux faire
    exactement en allant taper dans la zone mémoire du pilote de ta
    carte réseau ?
  • # Cisco et licences libres

    Posté par  . En réponse à la dépêche La saga Maui X-Stream continue. Évalué à 3.

    Il y a peu de temps, j'ai appris que Cisco utilisait un noyau Linux avec
    des outils libres pour faire tourner les cartes NAM "Network Analysis
    Module" qui vont dans les châssis Catalyst 6500 (gros commutateurs)

    Je me suis demandé s'ils respectaient les différentes licences, et j'ai
    trouvé ce document sur le site:

    http://www.cisco.com/en/US/products/sw/cscowork/ps5401/products_reg(...)

    Cela fait plaisir de voir que certains respectent le boulot des
    développeurs de LL.
  • [^] # Re: explication sommaire

    Posté par  . En réponse au message petite question..... Évalué à 3.

    Ok, et cet exemple là ça marche aussi: ?


    #include <pthread.h>

    int running = 1;

    void* thread_1(void* p)
    {
    int a = 0,c = 1;

    while(running) {
    //printf("thread : salut\n");
    //sleep(2);
    a++;
    c = a * c * c;
    }
    printf("thread : ok d'accord, c = %d...\n",c);
    }

    int main()
    {
    pthread_t* t;
    t = (pthread_t*)malloc(sizeof(pthread_t));;
    pthread_create(t,NULL,thread_1,NULL);
    sleep(10);
    printf("main : bon tu t'arretes maintenant!\n");
    running=0;
    sleep(100);
    }


    Compilé avec -O3.

    Extrait du code assembleur généré (rajouter l'option -S sur la
    ligne de commande de gcc):


    .globl thread_1
    .type thread_1, @function
    thread_1:
    pushl %ebp
    xorl %ecx, %ecx
    movl %esp, %ebp
    pushl %ebx
    movl $1, %edx
    subl $20, %esp
    movl running, %ebx
    testl %ebx, %ebx
    je .L8
    .p2align 4,,15
    .L6:
    incl %ecx
    movl %ecx, %eax
    imull %edx, %eax
    imull %eax, %edx
    testl %ebx, %ebx
    jne .L6
    .L8:
    movl %edx, 4(%esp)
    movl $.LC1, (%esp)
    call printf
    addl $20, %esp
    popl %ebx
    popl %ebp
    ret


    On voit ici que la boucle, située entre .L6 et .L8 ne recharge PAS
    le contenu de la variable running.

    Donc, ne pas faire de généralisation abusive à partir d'un seul
    exemple.
  • [^] # Re: explication sommaire

    Posté par  . En réponse au message petite question..... Évalué à 1.

    Essaie sans, tu verras bien si ça marche ou non.

    J'ai donné cet exemple parce que j'y ai été confronté dans la vie réelle.
    Et "volatile" a bien réglé mon problème.
  • [^] # Re: explication sommaire

    Posté par  . En réponse au message petite question..... Évalué à 3.


    Dans l'exemple que tu donnes, il faudrait mieux monter un verrou (ou un sémaphore) pour protéger running.


    Le but de mon exemple était de montrer de manière simple comment
    le comportement optimisant d'un compilateur peut être pénalisant
    lorsqu'une variable est modifiée de manière extérieure.

    Le but n'était pas de faire une démonstration de programmation
    multi-thread super bien ficelée (encore que, je ne vois pas trop ce
    qu'on peut reprocher à cet exemple, et en quoi un verrou réglerait
    le problème).

    Cela dit, tu as tout à fait raison de signaler que "volatile" est très
    utile pour gérer le matériel.

    En cherchant rapidement sur google, j'ai trouvé ceci:

    http://www.programmersheaven.com/articles/pathak/article1.htm(...)

    Cela résume assez bien les différents cas que l'on peut rencontrer
    (programmation multithread, traitement d'interruptions, devices
    utilisant du "memory-mapped I/O", ...)
  • # explication sommaire

    Posté par  . En réponse au message petite question..... Évalué à 9.

    Cela indique au compilateur qu'à chaque fois qu'il doit faire un accès
    à la variable, il doit aller y accéder réellement en mémoire (et donc
    ne pas utiliser un registre pour la manipuler).

    Par exemple, suppose que tu aies un thread exécutant ce type
    de traitement:


    volatile int running = 1;

    void thread_1(void)
    {
    while(running)
    {
    /* ... */
    }
    }



    Et tu as un 2ème thread qui va modifier la variable "running", en la
    mettant à 0.

    Si la variable "running" n'est pas marquée "volatile", le compilo va
    utiliser un registre dans la fonction thread_1 pour la stocker, et
    ne reconsultera pas la donnée elle-même en mémoire. Ce qui fait
    que si le 2ème thread modifie cette variable, cela n'est pas pris
    en compte.

    Le "volatile" indique donc au compilo que cette valeur peut être
    modifiée de manière "extérieure".
  • # Gros hack de la mort...

    Posté par  . En réponse au message ACPI : modifier la table DSDT. Évalué à 2.


    cc -Wall -O2 -Wstrict-prototypes -D_LINUX -D_ACPI_ASL_COMPILER -I../include -c -o aslcompilerlex.o aslcompilerlex.c

    aslcompiler.l: Dans la fonction « comment »:

    aslcompiler.l:847: error: `yytext_ptr' undeclared (first use in this function)

    aslcompiler.l:847: error: (Each undeclared identifier is reported only once

    aslcompiler.l:847: error: for each function it appears in.)



    J'ai eu la même erreur que toi. Pour passer au travers, j'ai édité le
    fichier aslcompilerlex.c, en ajoutant #define yytext_ptr AslCompilertext
    au dessus de la ligne "unput(c1);" (il n'y en a qu'une dans le code).

    Ensuite j'ai dumpé ma DSDT, que j'ai ensuite désassemblée avec le
    iasl généré juste avant:


    cat /proc/acpi/dsdt > dsdt.dat
    ./iasl -d dsdt.dat


    Bon apparemment ma DSDT est bugguée (compilée avec le
    compilateur MS d'après le dmesg) et je ne peux pas la recompiler
    directement:


    ./iasl -tc dsdt.dsl

    Intel ACPI Component Architecture
    ASL Optimizing Compiler / AML Disassembler version 20050309 [May 3 2005]
    Copyright (C) 2000 - 2005 Intel Corporation
    Supports ACPI Specification Revision 3.0

    dsdt.dsl 315: Method (\_WAK, 1, NotSerialized)
    Warning 2026 - ^ Reserved method must return a value (_WAK)

    dsdt.dsl 343: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 349: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 4569: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    dsdt.dsl 4574: Store (Local0, Local0)
    Error 1013 - ^ Method local variable is not initialized (Local0)

    ASL Input: dsdt.dsl - 4856 lines, 148894 bytes, 1886 keywords
    Compilation complete. 4 Errors, 1 Warnings, 0 Remarks, 563 Optimizations


    Donc apparemment le compilo semble marcher avec ce hack.
  • # Apparemment ce n'est pas dans le noyau...

    Posté par  . En réponse au message lspci et database name. Évalué à 4.

    ... mais dans un fichier tout bête.

    J'ai lancé un "strace lspci", le fichier qui est utilisé s'appelle
    "/usr/share/misc/pci.ids".
  • [^] # Re: Géant

    Posté par  . En réponse à la dépêche La réaction de Richard Stallman aux récents évènements autour de BitKeeper. Évalué à 3.


    Je met ce message, car l'acharnement de certains sur les moins m'a fait tomber en disgrasse et je ne peut même plus voter...


    Peut-être que si tu arrêtais de quémander des "plus" sans arrêt
    ça aiderait:

    http://linuxfr.org/comments/560433.html#560433(...)

    Avec en plus ta signature en prime...

    Donc en ce qui me concerne, je ne suis pas tenté de "pertinenter" tes posts.
    Quémander un "plus" en échange d'aide dans un forum, franchement c'est très moyen.

    Le système de notation (de ce que j'en ai compris), c'est qu'on
    "pertinente" quand le post est intéressant, apporte de l'info, des
    idées, etc. On l'"inutilente" quand on pense que la lecture du post est inutile aux autres lecteurs.
    Ce système n'est pas là pour dire "je suis d'accord / je suis pas d'accord".

    Ca m'arrive souvent de "pertinenter" un post avec lequel
    je ne suis pas d'accord sur les idées, mais qui est bien argumenté.
  • [^] # Re: Variable static

    Posté par  . En réponse au message Bugs étranges avec localtime(). Évalué à 4.

    Il y a aussi possibilité d'utiliser "localtime_r" qui est la version réentrante.

    Par exemple:

    localtime_r(&heurea,&sheurea);
    localtime_r(&heurep,&sheurep);

    est équivalent et évite les memcpy().

    My 2 cents.
  • [^] # Re: Forçage vitesse et duplex

    Posté par  . En réponse au message Réseaux Communication entre poste Autonégociation. Évalué à 3.

    Le hub est aussi en 10 Mb/s half-duplex ?

    Pour le forçage, c'est (par exemple) :

    mii-tool -F media interface

    mii-tool -F 10baseT-HD eth1

    Extrait de mii-tool -h:

    media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
    (to advertise both HD and FD) 100baseTx, 10baseT
  • # Forçage vitesse et duplex

    Posté par  . En réponse au message Réseaux Communication entre poste Autonégociation. Évalué à 2.

    As-tu essayé en forçant la vitesse et le duplex (avec mii-tool) ?

    Est-ce que ton hub supporte l'auto-négociation ? Si tu as forcé
    la vitesse et le duplex d'un coté, normalement de l'autre tu dois forcer
    aussi avec les mêmes paramètres.
  • [^] # Re: DNS ?

    Posté par  . En réponse au message eth0 et les protocoles. Évalué à 2.

    Les adresses IPv6 en fe80:: sont des adresses dites "link-local", c'est
    à dire utilisables uniquement sur le lien physique rattaché. Ca ne
    traverse pas les routeurs.

    Cette adresse a été générée automatiquement par le noyau, suivant
    ce principe:

    Adresse Ethernet : 00:0B:6A:4F:66:A2
    "Expansion" à 64-bits : 02:00:0B:6A:FF:FE:66:A2 (EUI-64)
    Ajout du préfixe link-local: fe80:: -> fe80::20b:6aff:fe4f:66a2/64

    Enfin bref, rien à craindre de ces adresses :)

    Pour la ::1/128, c'est la loopback, c'est l'équivalent en IPv6 de
    127.0.0.1, rien de méchant non plus.