{
 superclass => 'dgrm_msg',	# root name for our messages
 
 types =>
 {
  'string' =>                    
  { cpp => 'char *', 
    c => 'char *',  
    read => 'read_string', 
    write => 'add_string' 
  }, 
  
  'signed string' =>                    
  { cpp => 'char *', 
    c => 'char *',  
    read => 'read_signed_string', 
    write => 'add_signed_string' 
  }, 

  'digest' =>
  { cpp => 'char *',
    c => 'char *',
    read => 'read_digest',
    write => 'add_digest',
  },

  'int' =>                    
  { cpp => 'int', 
    c => 'int',  
    read => 'read_int', 
    write => 'add_int' 
  }, 
 },

 messages =>
 {
  'query vips' => 
  {
   fields => {},
   comments => 'broadcast to all lvsd',
  },
  
  'activate vip' =>
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      ip => {type => 'string',
		     size => 16},
	      port => {type => 'int'},},
   comments => 'sent from lvsd-notify to lvsd.  auth is digest key digested',
  },

  'deactivate vip' =>
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      ip => {type => 'string',
		     size => 16},
	      port => {type => 'int'},},
   comments => 'sent from lvsd-notify to lvsd.  auth is digest key digested',
  },

  'activate nip' =>		# a nip is a nat ip
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      ip => {type => 'string',
		     size => 16},},
   comments => 'sent from lvsd-notify to lvsd.  auth is digest key digested',
  },

  'deactivate nip' =>
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      ip => {type => 'string',
		     size => 16},},
   comments => 'sent from lvsd-notify to lvsd.  auth is digest key digested',
  },

  'activate realserver' =>	# these sent by mon alerts (on up/down)
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      node => {type => 'string',
		       size => 32},
	      ip => {type => 'string',
		     size => 16},
	      port => {type => 'int'},},
  },

  'deactivate realserver' =>
  {
   fields => {auth => {type => 'digest',
		       size => 20},
	      node => {type => 'string',
		       size => 32},	
	      ip => {type => 'string',
		     size => 16},
	      port => {type => 'int'},},
  },

 				# config altering messages
  'config sync' =>
  {
   fields => {seq_no => {type => 'int'}, # is this necessary?
	      ip => {type => 'string', # sending ip and port
		     size => 16},
	      port => {type => 'int'},
	      config_hash => {type => 'digest',
	                      size => 20},},
   comments => 'broadcast by all lvsd to reach consensus on config change',
  },
 }
}
