// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef PEERD_CONSTANTS_H_
#define PEERD_CONSTANTS_H_

namespace peerd {

namespace constants {

extern const char kSerbusServiceId[];

namespace mdns {

// The record type of a serbus record.
extern const char kSerbusServiceType[];
// Keys inside the Serbus TXT record.
extern const char kSerbusVersion[];
extern const char kSerbusPeerId[];
extern const char kSerbusName[];
extern const char kSerbusNote[];
extern const char kSerbusServiceList[];

extern const char kSerbusServiceDelimiter[];

}  // namespace mdns

namespace options {

namespace service {

extern const char kMDNSSectionName[];
extern const char kMDNSPort[];

}  // namespace service

}  // namespace options

}  // namespace constants

}  // namespace peerd

#endif  // PEERD_CONSTANTS_H_
