Mac address lobits macro error

Daniel Boyd <daniel.boyd@vacationclub.com>

From: Daniel Boyd <Daniel.Boyd@vacationclub.com>
To: pgsql-bugs@postgresql.org
Date: 1999-10-08T11:59:09Z
Lists: pgsql-bugs
============================================================================
                        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 -------