An interior point technique for solving bilevel programming problems