Thread

  1. Mac address lobits macro error

    Daniel Boyd <daniel.boyd@vacationclub.com> — 1999-10-08T11:59:09Z

    ============================================================================
                            POSTGRESQL BUG REPORT TEMPLATE
    ============================================================================
    
    
    Your name		:	Daniel F. Boyd
    Your email address	:	Daniel.Boyd@vacationclub.com
    
    
    System Configuration
    - ---------------------
      Architecture (example: Intel Pentium)  	:Intel Pentium
    
      Operating System (example: Linux 2.0.26 ELF) 	:FreeBSD 3.2
    
      PostgreSQL version (example: PostgreSQL-6.5)  :   PostgreSQL-6.5
    
      Compiler used (example:  gcc 2.8.0)		:gcc version 2.7.2.1
    
    
    Please enter a FULL description of your problem:
    - ------------------------------------------------
    Ethernet MAC addresses (macaddr type) are not compared correctly for
    equality.
    
    Please describe a way to repeat the problem.   Please try to provide a
    concise reproducible example, if at all possible: 
    - ----------------------------------------------------------------------
    select '0000c0:d178d1'::macaddr = '0000c0:0b78d1'::macaddr;
    
    Should return false, as these two mac addresses are different -- but
    it returns true.
    
    
    If you know how this problem might be fixed, list the solution below:
    - ---------------------------------------------------------------------
    
    
    Apply this patch to postgresql-6.5/src/backend/utils/adt/mac.c
    
    *** mac.c_orig  Thu Oct  7 17:12:38 1999
    --- mac.c       Thu Oct  7 17:12:52 1999
    ***************
    *** 136,142 ****
        ((unsigned long)((addr->a<<16)|(addr->b<<8)|(addr->c)))
    
      #define lobits(addr) \
    !   ((unsigned long)((addr->c<<16)|(addr->e<<8)|(addr->f)))
    
      /*
       *    MAC address reader.  Accepts several common notations.
    --- 136,142 ----
        ((unsigned long)((addr->a<<16)|(addr->b<<8)|(addr->c)))
    
      #define lobits(addr) \
    !   ((unsigned long)((addr->d<<16)|(addr->e<<8)|(addr->f)))
    
      /*
       *    MAC address reader.  Accepts several common notations.
    ------- end -------