Commit c8fde9f3 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/hartmut/projects/mysql/dev/4.1

into  mysql.com:/home/hartmut/projects/mysql/dev/5.0


ndb/tools/ndb_config.cpp:
  Auto merged
parents 6b52ad9a 2b6f6d6c
Loading
Loading
Loading
Loading
+45 −3
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
#include <my_getopt.h>
#include <mysql_version.h>

#include <netdb.h>

#include <NdbOut.hpp>
#include <mgmapi.h>
#include <mgmapi_configuration.hpp>
@@ -127,6 +129,11 @@ struct Match
  virtual int eval(NdbMgmHandle, const Iter&);
};

struct HostMatch : public Match
{
  virtual int eval(NdbMgmHandle, const Iter&);
};

struct Apply
{
  Apply() {}
@@ -297,9 +304,10 @@ parse_where(Vector<Match*>& where, int &argc, char**& argv)
  Match m;
  if(g_host)
  {
    m.m_key = CFG_NODE_HOST;
    m.m_value.assfmt("%s", g_host);
    where.push_back(new Match(m));
    HostMatch *m = new HostMatch;
    m->m_key = CFG_NODE_HOST;
    m->m_value.assfmt("%s", g_host);
    where.push_back(m);
  }
  
  if(g_type)
@@ -375,6 +383,40 @@ Match::eval(NdbMgmHandle h, const Iter& iter)
  return 1;
}

int
HostMatch::eval(NdbMgmHandle h, const Iter& iter)
{
  const char* valc;
  
  if(iter.get(m_key, &valc) == 0)
  {
	  struct hostent *h1, *h2;

	  h1 = gethostbyname(m_value.c_str());
	  if (h1 == NULL) {
		  return 0;
	  }

	  h2 = gethostbyname(valc);
	  if (h2 == NULL) {
		  return 0;
	  }

	  if (h1->h_addrtype != h2->h_addrtype) {
		  return 0;
	  }

	  if (h1->h_length != h2->h_length) 
	  {
		  return 0;
	  }
	  
	  return 0 == memcmp(h1->h_addr, h2->h_addr, h1->h_length);
  }

  return 0;
}

int
Apply::apply(NdbMgmHandle h, const Iter& iter)
{